は、私は次のクエリを持っている:DBから必要なチームIDのLinq2Sql:クエリの最適化
のGetリスト:
: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); }
私の関心は、コレクションのためのDBから受信したということです私は、クライアント側でどこ/ ToListメソッドを適用する必要があり、一度、各チーム
あたりのことを最適化する方法はありますか?
ありがとうございました。
P.S.潜在的に、私はサーバー上のアイテムを並べ替えることができました(インデックスを使用して)、チームアイランドを並べ替えて、実際にコレクションにクエリを出すことなくセクタコレクションで作業することができました...しかし、おそらくそれを最適化する良い方法がありますか?
TeamSectorsに 'ToList()'を適用すると、次のエラーが発生します。クエリ可能なメソッド呼び出しが必要です。 'teamSectors.ToList()'を取得しました。パラメータ名:infoここでは 'AsQueryable()'を呼び出す試みが記述されています:http://stackoverflow.com/questions/4697982/linq2sql-query-subquery-optimisation – Budda
ええ、オブジェクトに変換されたら、これを行う必要があります。私はあなたの他の質問に私が与えたものを反映するために答えを更新します。 – tvanfosson
はい、私はこのように行った。この回答は実際にはテストされていませんが、うまくいくようです。ありがとう。 – Budda