3

etc などの貪欲な LINQ 演算子を使用するのは賢明ToList,ToLookUp,Distinctですか?

LINQ クエリ実行のベスト プラクティスは何ですか? 多くの場合、オブジェクトに使用するList<>か、すべてのオブジェクト リストを にしIEnumerable<>ます。私は、最新のものの方が柔軟性が高いことを知っています。

メモリ (LINQ to Objects) を操作する場合は、常に遅延読み込みを使用しても問題ありません。これは、アクセスが必要になるとすぐに参照がクエリを実行するため、データが変更、追加、または挿入されることを恐れずに、必要なときにいつでもアクセスできるためです。ただし、これは、LINQ to EF などのデータベース LINQ クエリによって異なります。

StackOverflow ユーザーの意見をお願いします。

ありがとうございました!

4

1 に答える 1

1

LINQ クエリ実行のベスト プラクティスは何ですか?

リストはインデックスでアクセスでき、ルックアップはキーでアクセスできます。これらの型は明らかに、WCF の境界を越えてシリアル化できます。延期された IEnumerable は、これらのことをうまく行いません。

EF または LinqToSql の場合、DataContext または SqlConnection を保持するものが破棄される前にクエリを実行する必要があります。


私のコードでは、遅延 IEnumerables は、便利な場合にのみメソッド スコープの変数に使用します。プロパティ (プロパティが List を構築することもありますが、通常は単にインスタンスによってサポートされます) とメソッドの戻り値の型に List を使用します。私は比較的高価なこと (データベースへのアクセスや WCF の使用など) を行っているため、メモリ内の Linq クエリを熱心に実行するパフォーマンスが問題になることはありませんでした。

パフォーマンスの問題に関する最終的な権限は次のとおりです。how does it measure?

于 2012-04-06T15:49:52.750 に答える