C# 为SQL查询创建进度条(使用ADO.NET)
我试图为我的SQL查询创建一个进度条,但不知道从哪里开始。我已经尝试实现backgroundworker,但似乎无法使其正常工作 我正在使用VS2010.NET4.0C# 为SQL查询创建进度条(使用ADO.NET),c#,sql,wpf,ado.net,progress,C#,Sql,Wpf,Ado.net,Progress,我试图为我的SQL查询创建一个进度条,但不知道从哪里开始。我已经尝试实现backgroundworker,但似乎无法使其正常工作 我正在使用VS2010.NET4.0 Treinen trein = listboxVoertuigNr.SelectedItem as Treinen; List<string> treinenIds = new List<string>(); foreach (var item in listboxVoertuigNr.SelectedIt
Treinen trein = listboxVoertuigNr.SelectedItem as Treinen;
List<string> treinenIds = new List<string>();
foreach (var item in listboxVoertuigNr.SelectedItems)
{
treinenIds.Add(item.ToString());
}
fouten = eventsEntities.Foutens;
category = eventsEntities.Category_MMAP;
IEnumerable<dynamic> FoutenResultaat = new List<dynamic>();
FoutenResultaat =
(from x in treinen
join fout in fouten
on x.TreinId equals fout.TreinId
where dateStart <= fout.Datum && dateEnd >= fout.Datum
&& treinenIds.Contains(fout.Treinen.Name)
&& fout.Omschrijving.Contains(textboxFilterOmschrijving.Text)
&& fout.FoutCode.Contains(textboxFilterFout.Text)
&& fout.Module.Contains(textboxFilterModule.Text)
orderby fout.Datum descending, fout.Time descending
join cat in category
on fout.FoutCode equals cat.Foutcode
select new
{
Datum = fout.Datum,
Time = fout.Time,
FoutCode = fout.FoutCode,
Omschrijving = fout.Omschrijving,
Module = fout.Module.ToUpper(),
FoutId = fout.FoutId,
Name = x.Name,
Category = cat.Cat_MMAP
});
GetGraad(FoutenResultaat);
任何帮助或指向正确的方向都将不胜感激 这其中包括
ado.net
?所有代码看起来都是在内存数据上运行的(除非您使用的是EF)?@CodingGorilla肯定同意您可以使用一个通用的progressbar,它只指示异步任务正在工作,或者您可以使用一个集合来检查已经添加了多少项。但这将是困难的部分。如果您不知道代码将产生多少项,您可以估计结果。你能为你使用的类提供更多的代码吗?我在你的代码中没有提到BackgroundWorker
类。没有得到BackgroundWorker的任何结果。使用它对我来说真的很困惑,因为我试图从一些伪代码实现它。我觉得这不是一个正确的解决方案,这就是为什么要问一个开放的问题,我有点希望有一个优雅的解决方案,这其中包括ado.net
?所有代码看起来都是在内存数据上运行的(除非您使用的是EF)?@CodingGorilla肯定同意您可以使用一个通用的progressbar,它只指示异步任务正在工作,或者您可以使用一个集合来检查已经添加了多少项。但这将是困难的部分。如果您不知道代码将产生多少项,您可以估计结果。你能为你使用的类提供更多的代码吗?我在你的代码中没有提到BackgroundWorker
类。没有得到BackgroundWorker的任何结果。使用它对我来说真的很困惑,因为我试图从一些伪代码实现它。我觉得这不是一个正确的解决方案,所以我提出了一个开放的问题,我希望有一个优雅的解决方案
private void GetGraad(IEnumerable<dynamic> mijnResultaten)
{
foreach (dynamic item in mijnResultaten)
{
string graad = "";
string Toolbox = "";
if (item.Module.Contains("_"))
modNaam = item.Module.Split('_');
else if (item.Module.Contains(" "))
modNaam = item.Module.Split(' ');
string compare = modNaam[0].Substring(0, modNaam[0].Length - 1).ToString();
if (compare == "MPU")
{
var index = Properties.Settings.Default.listFoutcodeMPU.FindIndex(a => a == item.FoutCode);
if (index == -1)
graad = "";
else
{
graad = Properties.Settings.Default.listGraadMPU[index];
Toolbox = Properties.Settings.Default.listToolboxMPU[index];
}
}
if (compare == "AAUX")
{
var index = Properties.Settings.Default.listFoutcodeAAUX.FindIndex(a => a == item.FoutCode);
if (index == -1)
graad = "";
else
{
Toolbox = Properties.Settings.Default.listToolboxAAUX[index];
graad = Properties.Settings.Default.listGraadAAUX[index];
}
}
if (compare == "CTRL")
{
var index = Properties.Settings.Default.listFoutcodeCTRL.FindIndex(a => a == item.FoutCode);
if (index == -1)
graad = "";
else
{
Toolbox = Properties.Settings.Default.listToolboxACTRL[index];
graad = Properties.Settings.Default.listGraadCTRL[index];
}
}
string cat = Convert.ToString(item.Category);
if (cat == null)
cat = "Onbeschikbaar";
try
{
dataTreinFouten.Add(new FoutenMetNaam { Datum = item.Datum, FoutCode = item.FoutCode, Module = modNaam[0].ToUpper(), File = modNaam[1].ToUpper(), Name = item.Name, Omschrijving = item.Omschrijving, Time = item.Time, Graad = graad, FoutId = item.FoutId, Toolbox = Toolbox, Category = cat.ToUpper()});
}
catch (Exception ex)
{
Xceed.Wpf.Toolkit.MessageBox.Show(ex.Message);
}
}
}
class FoutenMetNaam
{
public DateTime Datum { get; set; }
public TimeSpan Time { get; set; }
public String FoutCode { get; set; }
public String Omschrijving { get; set; }
public String Module { get; set; }
public String Name { get; set; }
public int FoutId { get; set; }
public string Graad { get; set; }
public string File { get; set; }
public List<ExtraInfo> listInfoRondFout { get; set; }
public bool isManueel { get; set; }
public string Toolbox { get; set; }
public string Category { get; set; }
}
private EventsEntities eventsEntities = new EventsEntities();