LINQ クエリの結果を処理する際に使用したいデフォルトの型はありますか?
IEnumerable<>
デフォルトでは、LINQ はまたは を返しますIOrderedEnumerable<>
。 のほうが一般的にはより便利であることがわかったので、ほとんどの場合クエリを し、関数の引数と戻り値では必ず を使用するList<>
習慣を身につけました。ToList()
List<>
.ToList()
唯一の例外は、呼び出しによって早期に列挙されるLINQ to SQL ですIEnumerable
。
当社では、WCF も広範に使用しており、その既定のコレクション タイプは です。コードベースの他の部分との一貫性を保つために、VS2008 の [サービス参照設定] ダイアログでSystem.Array
これを常に に変更していますSystem.Collections.Generic.List
。
職業はなんですか?
ベストアンサー1
ToList
いつもLINQ to SQL に限らず、シーケンスを即座に評価します。それが必要ならそれで構いませんが、常に適切であるとは限りません。
List<T>
個人的には、直接返すことを宣言することは避けるようにします。通常はIList<T>
その方が適切であり、後で別の実装に変更することができます。もちろん、それ自体でのみ指定される操作もありますList<T>
... この種の決定は常に難しいものです。
編集: (コメントに書きたかったのですが、長くなりすぎます。) 遅延実行を使用すると、メモリに収まらないほど大きなデータソースを処理できます。たとえば、ログファイルを処理している場合 (ある形式から別の形式に変換したり、データベースにアップロードしたり、統計を計算したりする場合など)、ストリーミングすることで任意の量のデータを処理できる可能性がありますが、実際にはしないすべてをメモリに吸い込もうとします。これは特定のアプリケーションでは問題にならないかもしれませんが、念頭に置いておく必要があります。