Получите IEnumerable < T > из IEnumerable < IEnumerable < T > >
-
04-07-2019 - |
Вопрос
Публичный класс { ... } Р>
public class Order
{
public List<Item> Items
...
}
public class Customer
{
public List<Order> Orders
...
}
Теперь, используя LINQ, мне нужно получить все товары, которые купил клиент. Как я могу?
Я пробовал что-то вроде var items = from o в cust.Orders select o.Items;
, но в результате получается IEnuberable < List < Item > >
, и я просто хочу один IEnumerable < Item >
.
Я прошу здесь, чтобы попытаться избежать кодирования 2 цикла.
Решение
Вам необходимо SelectMany
, который представлен в выражениях запроса в виде второго (и последующих) предложений из
:
var items = from order in customer.Orders
from item in order.Items
select item;
Кроме того, чтобы игнорировать выражения запроса:
var items = customer.Orders.SelectMany(order => order.Items);
Не связан с StackOverflow