使用 lambda 查找所有实体
本文关键字:实体 查找 lambda 使用 | 更新日期: 2023-09-27 17:55:22
我有一个List<Person>
(人)每个人都有一个List<Kid>
(孩子)
如果我想找到所有的孩子,在 LINQ 中,这就是我会做的
var kids=new List<Kids>();
foreach(var p in people)
{
foreach(var kid in p.Kids)
{
kids.Add(kid);
}
}
是否有使用 LINQ 执行此操作的单行方法?
它就像 SelectMany:
将序列的每个元素投影到 IEnumerable 并展平 将生成的序列合并为一个序列。
var kids = people.SelectMany(p => p.Kids);
(如果您想要一个List<Kid>
而不是一个IEnumerable<Kid>
,只需在结果上调用.ToList()
。
您可以使用 SelectMany 扩展方法
var kids = new List(people.SelectMany(person => person.Kids));
SelectMany
的"LINQ-non-lambda-style"版本:
var allKids =
from p in people
from k in p.Kids // secondary "from" makes SelectMany (aka flat map)
select k;
// Result from above is IEnumerable, to Force evaluation as a List:
List<Kid> allKidsList = allKids.ToList();