¿Cómo puedo reducir IEnumerable < IEnumerable < Foo > > a IEnumerable < Foo > ;?

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

  •  05-07-2019
  •  | 
  •  

Pregunta

Lo siento por el título extraño. Lo que estoy tratando de lograr es simple:

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

Ejemplo:

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

Estoy seguro de que hay una expresión de Linq para esto ...

Sidenote: las listas pueden ser grandes.

¿Fue útil?

Solución

Como dice leppie, quiere Enumerable.SelectMany . La forma más simple sería:

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

En las expresiones de consulta, se llama a SelectMany cuando tiene más de un de la cláusula , por lo que una alternativa sería:

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

Otros consejos

  

SelectMany ()

OK

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top