Obtenez un IEnumerable < T > depuis un IEnumerable < IEnumerable & Lt; T > >
-
04-07-2019 - |
Question
Item de classe publique { ... }
public class Order
{
public List<Item> Items
...
}
public class Customer
{
public List<Order> Orders
...
}
Maintenant, en utilisant LINQ, je dois obtenir tous les articles achetés par un client. Comment puis-je?
J'ai essayé quelque chose comme var items = de o dans cust.Orders, sélectionnez o.Items;
, mais le résultat est IEnuberable & Lt; List < Item >
et je veux simplement un IEnumerable < Item >
.
Je demande ici à éviter de coder 2 boucles.
La solution
Vous avez besoin de SelectMany
, représenté dans les expressions de requête en tant que deuxième (et ultérieure) clauses à partir de
:
var items = from order in customer.Orders
from item in order.Items
select item;
Sinon, pour ignorer les expressions de requête:
var items = customer.Orders.SelectMany(order => order.Items);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow