LINQを使用してクエリを構築する場合、開発者はターゲットタイプの問題としておよび
の選択に直面することがよくあります。この選択を明確にするために、彼らの行動とパフォーマンスの違いを探りましょう。
IEnumerable
機能と同様のList抽象的な概念を表し、データを反復する方法を説明します。指定されたデータストレージまたはアクセス方法はありません。一方、は、データを固定されたサイズ配列に保存する特定の実装です。 を使用すると、コンパイラをより柔軟に遅延させて最適化できます。
例:linqクエリとiEnumeration
次のLinqクエリを検討してください:
IEnumerable
この例では、List
IEnumerable
を返すためのIEnumerable
の使用の使用をクエリします。 では、「内部」や「外部」などの内部メンバーには、問い合わせと評価を管理するための内部メンバーがあります。
評価の遅延vs.熱心な評価
サポート遅延評価は、実際のクエリ実行が反復中にデータにアクセスするときに遅れることを意味します。代わりに、の使用はすぐにクエリを強制し、オブジェクトを生成します。
<code class="language-csharp">IEnumerable<animal> sel = (from animal in Animals join race in Species on animal.SpeciesKey equals race.SpeciesKey select animal).Distinct();</code>
Distinct()
IEnumerable<animal>
次の状況が発生した場合、IEnumerable
詳細:
複数のLINQ式を積み重ねて、評価と最適化の遅延を可能にするつもりです。
実際のニーズのみを必要とするデータのみを返すことにより、不必要な処理を避けたいと思います。
IEnumerable
ToList()
いつリストを使用するかList次の状況が発生した場合、
1つのクエリのみを実行し、結果を固定セットに保存する必要があります。
ストレージ結果のデータ構造を明示的に制御する必要があります。 IEnumerable
以上がLINQのIENUMERABLE vs.リスト:それぞれをいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。