C# c中的LINQ:Foreach在LINQ中
我无法以动态方式选择行C# c中的LINQ:Foreach在LINQ中,c#,linq,dynamic,C#,Linq,Dynamic,我无法以动态方式选择行 foreach (var item in _listBox.SelectedItems) { Treinen treinData = (Treinen)item; Debug.WriteLine(treinData.Name); } 这里,我从一个列表框中获取所选项目的名称,该列表框中大约有60个名称,这取决于我想要获取这些所选项目的代表性SQL数据的选择。我认为这需要附加一个dynamic.Where子句 ObjectQuery<Fouten&
foreach (var item in _listBox.SelectedItems)
{
Treinen treinData = (Treinen)item;
Debug.WriteLine(treinData.Name);
}
这里,我从一个列表框中获取所选项目的名称,该列表框中大约有60个名称,这取决于我想要获取这些所选项目的代表性SQL数据的选择。我认为这需要附加一个dynamic.Where子句
ObjectQuery<Fouten> fouten = eventsEntities.Foutens;
loadedData =
(from fout in fouten
where datumStart <= fout.Datum && datumEnd >= fout.Datum
.... here should where be extended in some way, for example:
&& foreach (var item in _listBox.SelectedItems)
{
Treinen treinData = (Treinen)item;
where fout.Treinen.Name == treinData.Name
}
orderby fout.Datum, fout.Time
select new
{
Datum = fout.Datum,
Time = fout.Time,
FoutCode = fout.FoutCode,
Omschrijving = fout.Omschrijving,
Teller = fout.Teller,
Module = fout.Module.ToUpper(),
FoutId = fout.FoutId,
TreinId = fout.TreinId
}).AsEnumerable().Select(x => new Fouten
{
Datum = x.Datum,
Time = x.Time,
FoutCode = x.FoutCode,
Omschrijving = x.Omschrijving,
Teller = x.Teller,
Module = x.Module,
FoutId = x.FoutId,
TreinId = x.TreinId
})
.ToList();
显然,这是行不通的,但希望这对我正在努力实现的目标是有意义的。现在我得到的是所有项目的数据,而不是所选项目的数据。有人知道如何解决吗?我想你的Treinen中有一个ID字段或属性,因为你有fout.TreinId,所以更容易找到ID 您可以在进入查询之前填写您的ID列表,然后检查您的ID是否在列表中:
List<int> treinenIds = new List<int>();
foreach (var item in _listBox.SelectedItems)
treinenIds.Add(((Treinen)item).Id);
ObjectQuery<Fouten> fouten = eventsEntities.Foutens;
loadedData =
(from fout in fouten
where datumStart <= fout.Datum && datumEnd >= fout.Datum
//where-clause
where treinenIds.Contains(fout.TreinId)
orderby fout.Datum, fout.Time
select new
{
Datum = fout.Datum,
Time = fout.Time,
FoutCode = fout.FoutCode,
Omschrijving = fout.Omschrijving,
Teller = fout.Teller,
Module = fout.Module.ToUpper(),
FoutId = fout.FoutId,
TreinId = fout.TreinId
}).AsEnumerable().Select(x => new Fouten
{
Datum = x.Datum,
Time = x.Time,
FoutCode = x.FoutCode,
Omschrijving = x.Omschrijving,
Teller = x.Teller,
Module = x.Module,
FoutId = x.FoutId,
TreinId = x.TreinId
})
.ToList();
我不确定查询中是否支持.Contains,但如果支持,则此代码应适用于您的示例。该死,现在我觉得自己找不到它很愚蠢,因为它太简单了:非常感谢!