2011-01-19 19 views
13

Czy to możliwe, aby złączyć List<List<T>> w List<T> z pojedynczej operacji w sposób, który nie jest straszna powolne, tj:listy oddzielając je LINQ

List<List<int>> listOfLists = new List<List<int>>(); 
List<int> concatenatedList = listOfLists.Something... 

?

+2

ten nazywany jest spłaszczenie, nie konkatenacji. – leppie

+2

W rzeczywistości jest to nazywane konkatenacją, http://msdn.microsoft.com/en-us/library/ee353462.aspx. – Batibix

+0

Aby spłaszczyć listę list, można je połączyć. – bitbonk

Odpowiedz

25
listOfLists.SelectMany(l => l); 

pełna linia:

List<int> concatenatedList = listOfLists.SelectMany(l => l).ToList(); 
0

coś takiego:

listOfLists.Aggregate(new int[0], (res, list) => res.Concat(list));