在列表项中查找列表项
本文关键字:列表 查找 | 更新日期: 2023-09-27 18:02:30
我对这是如何工作的有点困惑。
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
的列表。我想做的是找到一个包含任何Stuff
且ID
为0
的TestClass
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();
有人能向我解释一下我做错了什么吗?
您可以使用Any
:
List<TestClass> TestList = RetrieveAllTestLists().
Where(x => x.StuffList.Any(y=> y.ID == 0)).ToList();
Basicaly Where
将选择所有满足条件的行(返回true
的行(,但在这个位置您有另一个Where
。如果存在满足给定条件的任何行,则Any
将返回true
。
List<TestClass> TestList = RetrieveAllTestLists().Where(x=> x.StuffList.Any(y=> y.ID == 0)).ToList();
Any((表示至少对于一个元素或IEnumerable,参数中给定的谓词返回true