¿Cómo puedo reducir IEnumerable < IEnumerable < Foo > > a IEnumerable < Foo > ;?
-
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.
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