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.

È stato utile?

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
scroll top