2010-02-09 15 views
5

Por ejemplo, tengo una lista de clientes que cada uno tiene una lista de pedidos. Ahora, quiero obtener una lista de todos los clientes con pedidos impagos (digamos que este es el estado 2). Junto con esa lista de clientes, quiero tener también la lista de pedidos pendientes de pago.Linq to Entities: agregar una condición where a una relación hija

Por ejemplo tengo esto:

from c in mycontext.Customers.Include("Orders") 
select c 

¿Dónde o cómo agrego la condición para buscar pedidos con el estado == 2 y la forma de incluir estas órdenes con la lista de clientes?

Respuesta

3

lo contrario

from c in mycontext.Customers.Include("Orders") 
where c.Orders.Any(order => order.status == 2) 
select c 

o

from c in mycontext.Customers.Include("Orders") 
let newObject = { 
    Customer = c, 
    NotPaidOrders = c.Orders.Where(order => order.status == 2).ToList() 
} 
where newObject.NotPaidOrders.Any() 
select newObject 
+0

La U sabio de. Cualquiera me ha puesto en el camino correcto para una solución, ¡gracias! –

+0

¡De nada! –

+0

Tenga en cuenta que si también necesita las entidades secundarias que satisfacen la condición, 'Any()' no se puede usar porque si 'Any' de' Orders' tiene 'order.status == 2', entonces ALL' Orders' será seleccionado. Lo siento si reanudé una publicación anterior, pero estoy luchando con un problema similar y pensé que esta podría ser la solución, pero no funcionó para mí. – GigiSan

2

Prueba esto:

from c in mycontext.Customers.Include("Orders") 
from order in c.Orders 
where order.status == 2 
select order 

O por qué no simplemente hacer esto:

from order in mycontext.Orders 
where order.status == 2 
select order 
Cuestiones relacionadas