関連データの複数のテーブルを使用する linq クエリを作成しようとしていますが、スタックしてしまいました。
期待される結果: 地域ごとに最も人口の多い 3 つの大都市圏を、人口の降順で返す必要があります。
サンプルデータ付きのテーブル:
MetroAreas -- ID、名前
2、グレーター ニューヨーク
都市 -- ID、名前、StateID
1293912、ニューヨーク市、10
CityPopulations -- ID、CityID、CensusYear、人口
20、1293912、2008、123456789
21、1293912、2007、123454321
MetroAreaCities -- ID、CityID、MetroAreaID
1、1293912、2
州 -- ID、名前、地域 ID
10、ニューヨーク、5
地域 -- ID、名前
5、北東
私は大都市圏から始めます。MetroAreaCities に参加して都市 ID を取得します。都市に参加して州 ID を取得します。States に参加して地域 ID を取得します。地域を結合して、場所でフィルタリングできるようにします。CityPopulations を含めようとすると行き詰まります。特定の地域で最も人口の多い 3 つの大都市圏のみが必要です。cityPopulations で単純な結合を行うと、1 年あたりのレコードが返されます。
(これが私がこれまでに持っているものです。このクエリは 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;
誰かがこのクエリを手伝ったり、正しい方向に向けたりできますか? 本当にありがとう。