Obtenga un IEnumerable < T > de un IEnumerable < IEnumerable < T > >
-
04-07-2019 - |
Pregunta
Artículo de clase pública { ... }
public class Order
{
public List<Item> Items
...
}
public class Customer
{
public List<Order> Orders
...
}
Ahora, usando LINQ necesito obtener todos los artículos que un cliente compró. ¿Cómo puedo?
Intenté algo así como var items = from o in cust.Orders selecciona o.Items;
pero el resultado es IEnuberable < List < Item > >
y solo quiero un IEnumerable < Item >
.
Le pido aquí que intente evitar la codificación de 2 bucles.
Solución
Necesita SelectMany
, que se representa en expresiones de consulta como segundas (y posteriores) de las cláusulas
:
var items = from order in customer.Orders
from item in order.Items
select item;
Alternativamente, para ignorar las expresiones de consulta:
var items = customer.Orders.SelectMany(order => order.Items);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow