LINQ の .First、.FirstOrDefault、.Take メソッドの違いの詳細な説明
LINQ には、シーケンスから最初の要素を取得するための複数のメソッドが用意されており、それぞれに独自の目的と動作があります。ここでは、情報に基づいた選択を行うのに役立つ、.First、.FirstOrDefault、.Take メソッドの詳細な比較を示します:
いつ使用するか。まず
シーケンスに少なくとも 1 つの要素が含まれることが予想される場合は、.First を使用します。指定された述語を満たす最初の要素を返すか、シーケンスが空の場合は InvalidOperationException をスローします。この方法は、欠落している要素が異常であるシナリオに適しています。
例:
<code class="language-csharp">var result = List.Where(x => x == "foo").First();</code>
.FirstOrDefault を使用する場合
シーケンスが空の可能性がある場合は、.FirstOrDefault を使用します。述語を満たす最初の要素、またはシーケンスが空の場合はデフォルト値を返します。このメソッドは通常、空のシーケンスの場合を明示的に処理する必要がある場合に使用されます。
例:
<code class="language-csharp">var result = List.Where(x => x == "foo").FirstOrDefault();</code>
.Take を使用する場合
.Take は、シーケンスの先頭から指定された数の要素を取得するために使用されます。あらかじめ決められた数の要素を含む新しいシーケンスを返します。 .First や .FirstOrDefault とは異なり、述語は必要なく、シーケンスの要素数が指定された数よりも少ない場合でも例外をスローしません。
例:
<code class="language-csharp">var result = List.Where(x => x == "foo").Take(1);</code>
主な違い
方法 | 返回值 | 空序列行为 |
---|---|---|
.First | 元素 | 抛出异常 |
.FirstOrDefault | 元素或默认值 | 返回默认值 |
.Take(1) | 包含单个元素的序列 | 返回空序列 |
適切な方法の選択は、期待される結果と、シーケンスが空の場合を明示的に処理する必要があるかどうかによって異なります。 .First は、少なくとも 1 つの要素が存在することが確実な場合に最適です。.FirstOrDefault は、空のシーケンスを処理する必要がある場合に役立ちます。.Take(1) は、例外をトリガーせずに最初の要素を取得する必要がある場合に役立ちます。
以上が.First、.FirstOrDefault、または .Take(1): どの LINQ メソッドを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。