2012-09-06 17 views
11

Ho un problema con un progetto. Sto cercando di ottenere un elenco di società, ma solo filtrare quelle società che si trovano a "Stoccolma".LINQ - nidificato dove clausola

Struttura della tabella

**Company**: 
CompanyID 
CompanyName 
etc… 

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

**CorrespondingAddress**: 
AddressID 
StreetName 
City 
etc… 

Ora quello che prima faccio è una query:

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

che ottiene l'elenco completo delle aziende e avere i loro indirizzi corrispondenti (che può essere multipla), in modo che il risultati aspetto:

enter image description here

Quindi la mia domanda è: come posso filtrare a seconda di quale è uno degli elementi annidati in corrispondenza corrispondente? Città per esempio?

Finora ho cercato

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

Ma nessuno di loro opere. Grazie!

risposta

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

+1 che dovrebbe farlo – Habib

+0

più eccellente! – BigOmega

4

provare qualsiasi()

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