51

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

4

2 回答 2

93

尝试

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

SelectMany 是一个 LINQ 转换,它本质上说“对于集合中的每个项目,返回集合的元素”。它将一个元素变成多个元素(因此是 SelectMany)。它非常适合将集合的集合分解为一个平面列表。

于 2008-11-26T16:05:45.733 回答
14
var lists = GetTheNestedCase();
return
    from list in lists
    from element in list
    select element;

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

于 2009-04-21T21:33:00.070 回答