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

StackOverflow https://stackoverflow.com/questions/1600310

  •  05-07-2019
  •  | 
  •  

对不起这个奇怪的标题。我想要实现的目标很简单:

IEnumerable<IEnumerable<Foo>> listoflist;
IEnumerable<Foo> combined = listoflist.CombineStuff();

示例:

{{0, 1}, {2, 3}} => {0, 1, 2, 3}

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

旁注:列表可能很大。

有帮助吗?

解决方案

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

 combined = listOfList.SelectMany(x => x);

在查询表达式中,如果您有来自子句的多个,则会调用 SelectMany ,因此另一种方法是:

 combined = from x in listOfList
            from y in x
            select y;

其他提示

  

的SelectMany()

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top