Я пытаюсь написать запрос linq, который использует несколько таблиц связанных данных и застрял.
Ожидаемый результат: мне нужно вернуть три самых густонаселенных столичных района на регион по убыванию населения.
таблицы с образцами данных:
MetroAreas - ID, Имя
2, Большой Нью-Йорк
Города - идентификатор, имя, идентификатор штата
1293912, Нью-Йорк, 10
CityPopulation - 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 для получения идентификаторов городов. Присоединяйтесь к городам, чтобы получить государственные идентификаторы. Присоединяйтесь к государствам, чтобы получить идентификатор региона. Присоединяйтесь к регионам, чтобы я мог фильтровать с помощью где. Я застреваю, когда пытаюсь включить 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;
Может кто-нибудь помочь мне с этим запросом или указать мне правильное направление? Большое спасибо.