を使用している場合 .netでは、、
およびは、オブジェクトシーケンスを示す2つの基本的なデータ構造です。どちらもLINQ(言語統合)の式式と一緒に使用してデータ変換と集約を実行できますが、行動とパフォーマンスの特性の点で異なります。 IEnumerable
List
ントロー的行動
は、反復要素シーケンスの動作を定義するインターフェイスです。インターフェイスのオブジェクトを返すメソッドを提供します。 コレクションを反復すると、列挙者は一度に1つの要素を通過しました。 あなたが提供するコードのコードでは、
変数のタイプはです。デバッグしてチェックすると、「内側」や「外側」などのメンバーに直接アクセスできません。これらのメンバーは、LINQの内部実装と基礎となるクエリパイプラインの一部です。 IEnumerable
GetEnumerator()
「内側」メンバーには、通常、それ以上の変換またはスクリーンダーを適用する前に、linq式の中間結果が含まれます。複雑なデバッグの問い合わせに特に役立ちます。 IEnumerator
IEnumerable
パフォーマンス予防策
通常、柔軟性と最適化能力が向上します。 LINQ式は遅延します。つまり、シーケンスを列挙したときにのみ実行できます。これにより、コンパイラと実行を実行しているクエリの最適化とバックグラウンドでの評価の遅延が可能になります。 sel
一方、IEnumerable<animal>
List<animal>
メソッドを使用してメソッドを
一般的に言えば、シーケンスを反復するだけで遅延評価を使用する必要がある場合は、
を使用することをお勧めします。データに複数回アクセスする必要がある場合、または静的データ構造に保存する必要がある場合は、パフォーマンスを向上させるためにに変換できます。
具体的な例IEnumerable
を使用する方法を示しています。初期クエリ(allspotted())を.ToList()
として維持することにより、クエリ全体を複数回実行せずにIEnumerable
およびList
を使用してスクリーニングできます。
以上がlinqのienumerable vs.リスト:それぞれをいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。