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