3

我对它的工作原理有点困惑。

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一个ID0

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();

谁能向我解释我做错了什么?

4

2 回答 2

5

您可以使用Any

List<TestClass> TestList = RetrieveAllTestLists().
                           Where(x => x.StuffList.Any(y=> y.ID == 0)).ToList();

基本上Where将选择所有满足条件的行(那些返回true),但在这个地方你有另一个Where. 如果有任何行满足给定条件,Any将返回。true

于 2013-03-06T17:26:38.597 回答
0
List<TestClass> TestList = RetrieveAllTestLists().Where(x=> x.StuffList.Any(y=> y.ID == 0)).ToList();

Any() 表示至少对于一个元素或 IEnumerable,参数中给出的谓词返回 true

于 2013-03-06T17:27:52.033 回答