如何在Linq中合并集合集合

时间:2008-11-26 16:03:40

标签: linq collections linq-to-objects

我希望能够将IEnumerable<IEnumerable<T>>融合到IEnumerable<T>中(即将所有单个集合合并为一个)。 Union运算符仅适用于两个集合。有什么想法吗?

2 个答案:

答案 0 :(得分:88)

尝试

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

SelectMany是一个LINQ转换,实质上是说“For Collection中的每个Item都返回一个集合的元素”。它会将一个元素转换为多个元素(因此SelectMany)。将集合集合分解为平面列表非常有用。

答案 1 :(得分:14)

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

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