Come posso ridurre IEnumerable < IEnumerable < Foo > > a IEnumerable < Foo > ;?
-
05-07-2019 - |
Domanda
Ci scusiamo per la strana didascalia. Quello che sto cercando di ottenere è semplice:
IEnumerable<IEnumerable<Foo>> listoflist;
IEnumerable<Foo> combined = listoflist.CombineStuff();
Esempio:
{{0, 1}, {2, 3}} => {0, 1, 2, 3}
Sono sicuro che ci sia un'espressione Linq per questo ...
Sidenote: le liste potrebbero essere grandi.
Soluzione
Come dice leppie, vuoi Enumerable.SelectMany
. La forma più semplice sarebbe:
combined = listOfList.SelectMany(x => x);
Nelle espressioni di query, SelectMany
viene chiamato quando si dispone di più di una clausola da
, quindi un'alternativa sarebbe:
combined = from x in listOfList
from y in x
select y;
Altri suggerimenti
SelectMany ()
OK
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow