如何在Linq中合并一个集合的集合

53

我想要将一个包含多个集合的 IEnumerable<IEnumerable<T>> 合并成一个单一的 IEnumerable<T>。使用 Union 操作符只适用于两个集合。有什么想法吗?

2个回答

96
var it = GetTheNestedCase();
return it.SelectMany(x => x);

SelectMany是LINQ转换操作,其基本意思是“对于集合中的每个项目返回集合的元素”。它将一个元素变成多个(因此称为SelectMany)。它非常适合将集合的集合拆分成平面列表。


5
LINQ总是能够在开箱即用的情况下给我带来惊喜。 :) - neminem
啊哈……!同样的声音,LINQ从不让人失望。 - Radityo Ardi

16
var lists = GetTheNestedCase();
return
    from list in lists
    from element in list
    select element;

使用C# 3.0查询表达式语法还有另一种方法来执行此操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接