我正在尝试编写一个 linq 查询,它使用多个相关数据表并且卡住了。
预期结果:我需要按人口递减返回每个地区人口最多的三个大都市区。
带有样本数据的表格:
MetroAreas -- ID, Name
2, Greater New York
城市 -- ID、姓名、StateID
1293912、纽约市、10
CityPopulations -- ID、CityID、CensusYear、人口
20、1293912、2008、123456789
21、1293912、2007、123454321
MetroAreaCities -- ID、CityID、MetroAreaID
1、1293912、2
州 -- ID、姓名、RegionID
10、纽约、5
地区 -- ID、名称
5、东北
我从都会区开始。加入 MetroAreaCities 以获取城市 ID。加入城市以获取州 ID。加入州以获取地区 ID。加入区域,以便我可以使用 where 进行过滤。当我尝试包含 CityPopulations 时,我被卡住了。我只想要给定区域的三个人口最多的都会区。对 cityPopulations 进行简单的连接会返回每年的记录。
(这是我到目前为止所拥有的,这个查询是为 SubSonic 3 编写的):
return from p in GeoMetroArea.All()
join q in GeoMetroAreaCity.All() on p.ID equals q.MetroAreaID
join r in GeoCity.All() on q.CityID equals r.ID
join s in GeoState.All() on r.StateID equals s.ID
join t in GeoRegion.All() on s.RegionID equals t.ID
where t.ID == regionObjectPassedToMethod.ID
select p;
任何人都可以帮助我解决这个问题或指出正确的方向吗?非常非常感谢你。