Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to merge a collection of collections in Linq

I would like to be able to fusion an IEnumerable<IEnumerable<T>> into IEnumerable<T> (i.e. merge all individual collections into one). The Union operators only applies to two collections. Any idea?

like image 759
Joannes Vermorel Avatar asked Nov 26 '08 16:11

Joannes Vermorel


2 Answers

Try

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

SelectMany is a LINQ transformation which essentially says "For Each Item in a collection return the elements of a collection". It will turn one element into many (hence SelectMany). It's great for breaking down collections of collections into a flat list.

like image 190
JaredPar Avatar answered Oct 04 '22 09:10

JaredPar


var lists = GetTheNestedCase(); return     from list in lists     from element in list     select element; 

is another way of doing this using C# 3.0 query expression syntax.

like image 34
Joe Chung Avatar answered Oct 04 '22 08:10

Joe Chung