1

我正在使用 LINQ to SQL,例如:

var b =  
   from s in context.data  
   select new  
   {   
     id = s.id,  
     name = s.name  
     myEnumerable = s.OneToMany
   };

其中 myEnumerable 是类型IEnumberable<T>,我现在想b根据myEnumerable. 例如,说<T>有属性BerryBerryID,我想做类似的事情:

b = 
   from p in b
   where //p.myEnumerable.myType.BerryID== 13
   select p;

我觉得我错过了一些简单的东西......

4

3 回答 3

3

由于 myEnumerable 是一个 IEnumerable 你将不得不做一个 where 。

var filteredData = from p in listOfData
                               where p.InnerData.Where(b=>b.ID == 13).Count() > 0
                               select p;

如果我明白你在说什么......这是如果 Enumerable 中有一个 ID = 13 的话。

于 2009-09-24T21:07:09.443 回答
2

您是否要选择是否有p任何项目等于 13?p.myEnumerableBerryID

b = from p in b
    where p.myEnumerable.Any(t => t.BerryID == 13)
    select p;

或者您是否要选择p是否所有项目p.myEnumerableBerryID等于 13?

b = from p in b
    where p.myEnumerable.All(t => t.BerryID == 13)
    select p;

p.myEnumerable在您选择之前,您希望商品满足的条件到底是什么p

于 2009-09-24T20:58:27.497 回答
2

仅保留集合中至少一项BerryID等于 13 的项。

 var b = context.data
     .Where(s => s.OneToMany.Any(i => i.BerryID == 13))
     .Select(s => new { id = s.id, name = s.name, myEnumerable = s.OneToMany });

仅保留集合中所有项目都BerryID等于 13 的项目。

 var b = context.data
     .Where(s => s.OneToMany.All(i => i.BerryID == 13))
     .Select(s => new { id = s.id, name = s.name, myEnumerable = s.OneToMany });
于 2009-09-24T21:04:48.920 回答