51 votes

Comment fusionner une collection de collections dans Linq

J'aimerais pouvoir fusionner un IEnumerable<IEnumerable<T>> en IEnumerable<T> (c'est-à-dire fusionner toutes les collections individuelles en une seule). Les opérateurs Union ne s'appliquent qu'à deux collections. Une idée?

91voto

JaredPar Points 333733

Essayer

 var it = GetTheNestedCase();
return it.SelectMany(x => x);
 

SelectMany est une transformation LINQ qui indique essentiellement "Pour chaque élément d'une collection, les éléments d'une collection sont renvoyés". Cela transformera un élément en plusieurs (d'où SelectMany). C'est idéal pour décomposer les collections de collections en une liste à plat.

14voto

Joe Chung Points 6263
 var lists = GetTheNestedCase();
return
    from list in lists
    from element in list
    select element;
 

Pour ce faire, utilisez une autre syntaxe d'expression de requête C # 3.0.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X