У меня следующий запрос:
Получить список необходимых командных идентификаторов из БД:
IList<int> teamIds =
(from sector in DbContext.sectors
where sector.Type=typeValue
group sector by sector.TeamId into teamSectors
select teamSectors.Key
).ToList();
Используя этот список, выберите все сектора для требуемых команд:
IList<InfrStadSector> sectorsForAllTeams = (from sector in DbContext.sectors
where teamIds.Contains(sector.TeamId)
select sector
).ToList();
Создать список стадионов по секторам:
IList<InftStadium> stadiums = new List<InfrStadium>();
foreach(int teamId in teamIds)
{
IList<InfrStadSector> teamSectors =
sectorsForAllTeams.Where(sect=>sect.TeamId==teamIds).ToList();
stadiums.Add(new InfrStadium(teamId, teamSectors);
}
Меня беспокоит то, что для сбора, полученного из БД, мне нужно применить Where / ToList на стороне клиента один раз для каждой команды
Есть ли способ оптимизировать это?
Спасибо.
P.S. Потенциально, я мог бы сортировать элементы на сервере (с помощью индекса), затем сортировать teamIds и работать с коллекцией секторов без необходимости «запрашивать» коллекцию ... но, возможно, есть лучший способ оптимизировать это?