ホームページ > バックエンド開発 > C++ > .first()vs。firstordefault()in linq:それぞれをいつ使用する必要がありますか?

.first()vs。firstordefault()in linq:それぞれをいつ使用する必要がありますか?

Susan Sarandon
リリース: 2025-01-26 10:51:10
オリジナル
619 人が閲覧しました

.First() vs. .FirstOrDefault() in LINQ: When Should I Use Each?

LINQ での First() と FirstOrDefault() の使用シナリオ

LINQ の .First() メソッドと .FirstOrDefault() メソッドは機能的には似ていますが、動作が若干異なります。それぞれの方法が適したシナリオを詳しく見てみましょう。

.First() を使用する場合

シーケンスに少なくとも 1 つの要素が必ず含まれることが確実な場合は、.First() を使用します。最初に一致した要素を返します。一致する要素が見つからない場合は、「InvalidOperationException」例外がスローされます。この方法は、空のシーケンスが例外である場合に適しています。

.FirstOrDefault() を使用する場合

シーケンスが空である可能性がある場合、または空であることが予想される場合は、.FirstOrDefault() を使用します。一致する要素がある場合は、最初に一致する要素を返します。それ以外の場合は、要素タイプのデフォルト値を返します。このメソッドは、空のシーケンスが有効な場合に使用する必要があります。

.Take(1) を使用する場合

.Take(1) メソッドは .First() に似ていますが、重要な違いが 1 つあります。要素自体は返されませんが、要素を 1 つだけ含むシーケンスが返されます。この区別は、一連の値型を扱う場合に重要になります。

次のシーケンスを考えてみましょう:

<code class="language-csharp">var list = new List<int> { 1, 2, 3 };</code>
ログイン後にコピー

.First() を使用します:

<code class="language-csharp">int result = list.Where(x => x % 2 == 0).First();</code>
ログイン後にコピー

シーケンス内に偶数 (2) があるため、このコードは値 2 を返します。偶数がない場合は例外がスローされます。

.FirstOrDefault() を使用します:

<code class="language-csharp">int result = list.Where(x => x % 2 == 4).FirstOrDefault();</code>
ログイン後にコピー

この場合、述語に一致する偶数がないため、.FirstOrDefault() は整数のデフォルト値である 0 を返します。

.Take(1) を使用します:

<code class="language-csharp">var result = list.Where(x => x % 2 == 0).Take(1);</code>
ログイン後にコピー

このコードは、単一の要素 2 を含むシーケンスを返します。

以上が.first()vs。firstordefault()in linq:それぞれをいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート