Linq2Sql: optimización de consultas

Tengo la siguiente consulta:

Obtenga una lista de los ID de equipo requeridos de DB:

       , IList<int> teamIds =
            (from sector in DbContext.sectors
             where sector.Type=typeValue
             group sector by sector.TeamId into teamSectors
             select teamSectors.Key
            ).ToList();

Con esta lista, busque todos los sectores para los equipos requeridos:

IList<InfrStadSector> sectorsForAllTeams = (from sector in DbContext.sectors
                         where teamIds.Contains(sector.TeamId)
                         select sector
                        ).ToList();

Crear una lista de estadios por sectores:

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);
}

Mi preocupación aquí es que para la recolección recibida de DB necesito aplicar Where / ToList en el lado del cliente una vez por cada equipo

¿Hay alguna forma de optimizar eso?

Gracias.

PD Potencialmente, podría ordenar elementos en el servidor (usando índice), luego ordenar teamIds y trabajar con la colección de sectores sin realmente 'consultar' la colección ... ¿pero probablemente hay una mejor manera de optimizar eso?

Respuestas a la pregunta(1)

Su respuesta a la pregunta