views:

2007

answers:

2

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?

+12  A: 

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.

JaredPar
A: 
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.

Joe Chung