使用lambda查找所有实体

dev*_*747 3 c# linq

我有List<Person>(人)每个人都有List<Kid>(孩子)

如果我想找到所有的孩子,在LINQ这就是我要做的

var kids=new List<Kids>();

foreach(var p in people)
{
    foreach(var kid in p.Kids)
    {
         kids.Add(kid);
    }
}
Run Code Online (Sandbox Code Playgroud)

使用LINQ有一种单行方式吗?

Mat*_*ens 13

它就像SelectMany一样简单:

将序列的每个元素投影到IEnumerable,并将生成的序列展平为一个序列.

var kids = people.SelectMany(p => p.Kids);
Run Code Online (Sandbox Code Playgroud)

(如果你想要一个List<Kid>而不是一个IEnumerable<Kid>,只需调用.ToList()结果.)