Ottieni un IEnumerable < T > da un IEnumerable < IEnumerable < T > >
-
04-07-2019 - |
Domanda
Articolo di classe pubblica { ... }
public class Order
{
public List<Item> Items
...
}
public class Customer
{
public List<Order> Orders
...
}
Ora, usando LINQ ho bisogno di ottenere tutti gli articoli acquistati da un cliente. Come posso?
Ho provato qualcosa come var items = from o in cust.Orders select o.Items;
ma il risultato è IEnuberable < List < Item > >
e voglio solo un IEnumerable < Item >
.
Chiedo qui per cercare di evitare la codifica di 2 loop.
Soluzione
Hai bisogno di SelectMany
, rappresentato nelle espressioni di query come seconde (e successive) clausole
:
var items = from order in customer.Orders
from item in order.Items
select item;
In alternativa, per ignorare le espressioni di query:
var items = customer.Orders.SelectMany(order => order.Items);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow