如何将IEnumerable <IEnumerable <Foo >>减少到IEnumerable <Foo>?

maf*_*afu 3 c# linq ienumerable

对不起,奇怪的标题.我想要实现的目标很简单:

IEnumerable<IEnumerable<Foo>> listoflist;
IEnumerable<Foo> combined = listoflist.CombineStuff();
Run Code Online (Sandbox Code Playgroud)

例:

{{0, 1}, {2, 3}} => {0, 1, 2, 3}
Run Code Online (Sandbox Code Playgroud)

我很肯定有一个Linq表达式...

旁注:列表可能很大.

Jon*_*eet 14

正如leppie所说,你想要的Enumerable.SelectMany.最简单的形式是:

 combined = listOfList.SelectMany(x => x);
Run Code Online (Sandbox Code Playgroud)

在查询表达式中,SelectMany当您有多个from子句时调用,因此替代方法是:

 combined = from x in listOfList
            from y in x
            select y;
Run Code Online (Sandbox Code Playgroud)