2012-09-06 17 views
11

Mam problem z projektem. Próbuję uzyskać listę firm, ale filtruję tylko te firmy, które znajdują się w "Sztokholmie".LINQ - zagnieżdżony gdzie klauzula

struktura Tabela

**Company**: 
CompanyID 
CompanyName 
etc… 

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

**CorrespondingAddress**: 
AddressID 
StreetName 
City 
etc… 

Teraz co mam najpierw zrobić to zapytanie:

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

który dostaje pełną listę firm i odpowiadające im adresy (co może być wiele), a więc wyniki wygląda następująco:

enter image description here

Moje pytanie brzmi: jak mogę filtrować w zależności od tego, który z zagnieżdżonych elementów znajduje się pod adresem CorrespondingAddress? Miasto na przykład?

Dotychczas starałem

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

Ale żaden z nich nie działa. Dzięki!

Odpowiedz

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

+1 że powinien to zrobić – Habib

+0

najbardziej doskonałe! – BigOmega

4

Spróbuj Obojętnie()

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