首頁 >後端開發 >C++ >LINQ 中的 .First() 與 .FirstOrDefault():什麼時候應該使用它們?

LINQ 中的 .First() 與 .FirstOrDefault():什麼時候應該使用它們?

Susan Sarandon
Susan Sarandon原創
2025-01-26 10:51:10622瀏覽

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

LINQ 中 First() 與 FirstOrDefault() 的使用場景

LINQ 的 .First().FirstOrDefault() 方法功能相似,但行為略有不同。讓我們深入探討每個方法適用的場景。

何時使用 .First()

如果您確定序列總是至少包含一個元素,請使用 .First()。它將傳回第一個匹配的元素。如果找不到符合的元素,則會拋出「InvalidOperationException」例外。當序列為空是異常情況時,此方法適用。

何時使用 .FirstOrDefault()

如果序列可能為空或預期為空,請使用 .FirstOrDefault()。如果存在匹配元素,它將返回第一個匹配的元素;否則,它將返回元素類型的預設值。當序列為空是有效情況時,應使用此方法。

何時使用 .Take(1)

.Take(1) 方法類似 .First(),但有一個關鍵差異。它不傳回元素本身,而是傳回包含恰好一個元素的序列。當處理值類型序列時,這種差異變得非常重要。

範例

考慮以下序列:

<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 的序列。

以上是LINQ 中的 .First() 與 .FirstOrDefault():什麼時候應該使用它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn