Here's another thing I did not know about LINQ that I found out from this book.
SelectMany is how LINQ internally translates a collection of a collection into a flat collection.
Say you have a class:
and you write the following LINQ:
Needless to say you get an IEnumerable<order[]>
However if you want an IEnumerable<order> you can do that in LINQ syntax simply as:
The compiler will actually translate it into a SelectMany call :
Note:
In fact SelectMany will always be called when there is a from after the first from.
SelectMany is how LINQ internally translates a collection of a collection into a flat collection.
Say you have a class:
public class Customer { public Order[] Orders; }
and you write the following LINQ:
var orders = from customer in Customers
select customer.Orders;
Needless to say you get an IEnumerable<order[]>
However if you want an IEnumerable<order> you can do that in LINQ syntax simply as:
var orders = from customer in Customers from order in customer.Orders select order;
The compiler will actually translate it into a SelectMany call :
var orders = Customers.SelectMany(customer => customer.Orders);
Note:
In fact SelectMany will always be called when there is a from after the first from.
No comments:
Post a Comment