2012-09-06 24 views
11

Tengo un problema con un proyecto. Estoy tratando de obtener una lista de compañías, pero solo filtrar aquellas empresas que están ubicadas en "Estocolmo".LINQ - anidado donde cláusula

Estructura de tabla

**Company**: 
CompanyID 
CompanyName 
etc… 

**CompanyAddressDetails** (relation table): 
Company_CompanyID 
CorrespondingAddress_AddressID 

**CorrespondingAddress**: 
AddressID 
StreetName 
City 
etc… 

Ahora lo que primero que hago es una consulta:

var companyModel = from c in db.Company select c; 

que obtiene la lista completa de las empresas y que tienen sus direcciones correspondientes (que pueden ser múltiples), por lo que la Los resultados se ve así:

enter image description here

Entonces mi pregunta es: ¿cómo puedo filtrar dependiendo de cuál de los elementos anidados en CorrespondingAddress es? Ciudad por ejemplo?

Hasta ahora he intentado

companyModel = companyModel.Where(s => s.CorrespondingAddress.Where(x => x.City.Equals("Stockholm"))); 
companyModel = companyModel.Where(s => s.CorrespondingAddress.ToList().First().Address.Equals("Stockholm")); 

Pero ninguno de ellos trabaja. ¡Gracias!

Respuesta

30
companyModel = companyModel 
       .Where(s => s.CorrespondingAddress 
        .Any(x => x.City.Equals("Stockholm"))); 
+0

+1 que debe hacerlo – Habib

+0

más excelente! – BigOmega

4

probar cualquiera()

companyModel = companyModel.Where(s => s.CorrespondingAddress.Any(x => x.City.Equals("Stockholm")));