LINQ查询多对多关系
我有一个ASP.NET应用程序,它与包含4个表的SQL数据库对话:LINQ查询多对多关系,linq,entity-framework,linq-to-sql,linq-to-entities,many-to-many,Linq,Entity Framework,Linq To Sql,Linq To Entities,Many To Many,我有一个ASP.NET应用程序,它与包含4个表的SQL数据库对话: 城市 州 国家(地图城市州) 客户(存储他们所居住城市的ID) 我需要统计一个特定州有多少客户。我可以通过以下SQL查询实现这一点: select count(*) from Customers where CityID in ( select sc.CityID from StatesCities sc, States s where sc.StateID = s.StateID AND s.Name
- 城市
- 州
- 国家(地图城市州)
- 客户(存储他们所居住城市的ID)
select count(*) from Customers where CityID in
(
select sc.CityID from StatesCities sc, States s
where sc.StateID = s.StateID AND s.Name = 'Texas'
)
如何使用EF或LINQtoSQL在LINQ中表示此查询的等价物
通过EF方法,我已经做到了:
var cities=db.cities.Where(c=>c.States.Any(s=>s.Name==“德克萨斯”)代码>
但我不知道如何进行客户/城市ID匹配和计数。您可以这样做:
int CustomersCount=db.Customers.Count(c=>c.City.State.Name=="Texas");
或
@216第一个建议让我走上了正确的轨道,但由于一个城市可以存在于多个州,我需要稍微调整一下陈述:
int customersCount = db.Customers.Count(c => c.City.States.Any(s => s.Name == "Texas"));
int customersCount = db.Customers.Count(c => c.City.States.Any(s => s.Name == "Texas"));