我有一个孩子( 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来做这件事的方法?
发布于 2013-01-23 04:20:09
它就像SelectMany一样简单
将序列的每个元素投影到IEnumerable,并将生成的序列展平为一个序列。
var kids = people.SelectMany(p => p.Kids);(如果您想要List<Kid>而不是IEnumerable<Kid>,只需对结果调用.ToList()。)
发布于 2013-01-23 04:21:04
您可以使用SelectMany扩展方法
var kids = new List(people.SelectMany(person => person.Kids));发布于 2013-01-23 04:23:15
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();https://stackoverflow.com/questions/14467266
复制相似问题