我对它的运作方式感到有点困惑。
class TestClass
{
public int ID {get;set;}
public List<Stuff> StuffList {get; set;}
}
class Stuff
{
public int ID {get;set;}
public string Description {get;set;}
}
因此每个TestClass
都有一个Stuff
列表。
我想要做的是找到一个TestClass
,其中包含Stuff
ID
0
List<TestClass> TestList = RetrieveAllTestLists();
//Pseudocode:
//
// Find all TestClass in TestList that contain a Stuff with ID == 0;
List<TestClass> TestList = RetrieveAllTestLists().Where(x=> x.StuffList.Where(y=> y.ID == 0)).ToList();
我试过这个,但它不起作用:
{{1}}
任何人都可以向我解释我做错了吗?
答案 0 :(得分:5)
您可以使用Any
:
List<TestClass> TestList = RetrieveAllTestLists().
Where(x => x.StuffList.Any(y=> y.ID == 0)).ToList();
Basicaly Where
将选择满足条件的所有行(返回true
的那些行),但在此处您还有另一个Where
。如果有任何行满足给定条件,Any
将返回true
。
答案 1 :(得分:0)
List<TestClass> TestList = RetrieveAllTestLists().Where(x=> x.StuffList.Any(y=> y.ID == 0)).ToList();
Any()表示至少对于一个元素或IEnumerable,参数中给出的谓词返回true