Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ查询多对多关系_Linq_Entity Framework_Linq To Sql_Linq To Entities_Many To Many - Fatal编程技术网

LINQ查询多对多关系

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

我有一个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 = '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"));