1
나는 다음과 같은 쿼리가 : DB에서 필요한 팀 ID의Linq2Sql : 쿼리 최적화
가져 오기 목록 :
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();
섹터를 기반으로 한 경기장 목록 만들기 :
여기 6,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); }
내 관심사는 컬렉션 DB에서 수신 된 나는 각 팀
이를 최적화 할 수있는 방법이 있나요 당 한 번만 클라이언트 측에서 어디/ToList를 적용 할 필요가 있다는 것입니다?
감사합니다.
P. 잠재적으로, 나는 (인덱스를 사용하여) 서버에서 아이템을 정렬하고, 팀 아이디를 정렬하고, 콜렉션을 실제로 쿼리하지 않고 섹터 콜렉션을 사용하여 작업 할 수 있습니다.하지만이를 최적화하는 더 좋은 방법은 없을까요?
TeamSectors에 'ToList()'를 적용하면 다음 오류가 발생합니다. Queryable 메서드 호출이 필요합니다. 'teamSectors.ToList()'를 얻었습니다. 매개 변수 이름 : 정보. 'AsQueryable()'호출 시도가 여기에 설명되어 있습니다 : http://stackoverflow.com/questions/4697982/linq2sql-query-subquery-optimisation – Budda
그래, 일단 개체로 변환되면이 작업을 수행해야합니다. 나는 당신의 다른 질문에 대한 대답을 반영하도록 대답을 업데이트 할 것입니다. – tvanfosson
예, 저는 이쪽으로갔습니다. 이 답변이 실제로 테스트되지는 않았지만 제대로 작동해야하는 것처럼 보입니다. 감사. – Budda