C# LINQ-嵌套where子句

C# LINQ-嵌套where子句,c#,linq,entity-framework,C#,Linq,Entity Framework,我对一个项目有问题。我正在尝试获取公司列表,但只筛选位于“斯德哥尔摩”的公司 表结构 **Company**: CompanyID CompanyName etc… **CompanyAddressDetails** (relation table): Company_CompanyID CorrespondingAddress_AddressID **CorrespondingAddress**: AddressID StreetName City etc… 现在我首先要做的是一个查询:

我对一个项目有问题。我正在尝试获取公司列表,但只筛选位于“斯德哥尔摩”的公司

表结构

**Company**:
CompanyID
CompanyName
etc…

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

**CorrespondingAddress**:
AddressID
StreetName
City
etc…
现在我首先要做的是一个查询:

var companyModel = from c in db.Company select c;
它获取公司的完整列表,并具有相应的地址(可以是多个),因此结果如下所示:

所以我的问题是:如何根据对应地址下的嵌套元素之一进行过滤?比如城市

到目前为止我试过了

companyModel = companyModel.Where(s => s.CorrespondingAddress.Where(x => x.City.Equals("Stockholm")));
companyModel = companyModel.Where(s => s.CorrespondingAddress.ToList().First().Address.Equals("Stockholm"));
但它们都不起作用。谢谢

试试任何一个()

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

我没有在其他地方找到这个,所以谢谢你给我指出了正确的方向。为什么OP第一次尝试中的第二个
位置不起作用?@ninbit因为它只测试公司的“第一个”对应地址(你甚至不知道对应地址的测试顺序)在斯德哥尔摩。我们想要的是“至少一个”对应的地址,而不是“第一个”。例如,如果一家公司的地址在伦敦,另一家在斯德哥尔摩,OP的查询可能不会返回该公司,而带有“Any”的查询将返回该公司。
companyModel = companyModel.Where(s => s.CorrespondingAddress.Any(x => x.City.Equals("Stockholm")));