Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c中的LINQ:Foreach在LINQ中_C#_Linq_Dynamic - Fatal编程技术网

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,但如果支持,则此代码应适用于您的示例。

该死,现在我觉得自己找不到它很愚蠢,因为它太简单了:非常感谢!