web-dev-qa-db-fra.com

Liste à plat dans LINQ

J'ai une requête LINQ qui renvoie IEnumerable<List<int>> mais je souhaite renvoyer uniquement List<int>, donc je souhaite fusionner tous mes enregistrements de mon IEnumerable<List<int>> vers un seul tableau.

Exemple :

IEnumerable<List<int>> iList = from number in
    (from no in Method() select no) select number;

Je veux prendre tout mon résultat IEnumerable<List<int>> à un seul List<int>

Par conséquent, à partir des tableaux sources: [1,2,3,4] et [5,6,7]

Je veux un seul tableau [1,2,3,4,5,6,7]

Merci

279
Cédric Boivin

Essayez SelectMany()

var result = iList.SelectMany( i => i );
510
Mike Two

Avec la syntaxe de requête:

var values =
from inner in outer
from value in inner
select value;
80
recursive
iList.SelectMany(x => x).ToArray()
22
Dylan Beattie

Comme ça?

var iList = Method().SelectMany(n => n);
11
mqp

Si vous avez un List<List<int>> k vous pouvez le faire

List<int> flatList= k.SelectMany( v => v).ToList();
10
Daniel