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中文網其他相關文章!