Obtenha um ienumerable de um Ienumerable >
-
04-07-2019 - |
Pergunta
Item da classe pública {...}
public class Order
{
public List<Item> Items
...
}
public class Customer
{
public List<Order> Orders
...
}
Agora, usando o LINQ, preciso obter todos os itens que um cliente comprou. Como posso?
Eu tentei algo como var items = from o in cust.Orders select o.Items;
mas o resultado é IEnuberable<List<Item>>
E eu quero apenas um IEnumerable<Item>
.
Estou pedindo aqui para tentar evitar a codificação de 2 loops.
Solução
Você precisa SelectMany
, que é representado em expressões de consulta como segunda (e subsequente) from
cláusulas:
var items = from order in customer.Orders
from item in order.Items
select item;
Alternativamente, para ignorar expressões de consulta:
var items = customer.Orders.SelectMany(order => order.Items);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow