首頁 > 後端開發 > C++ > LINQ 擴充方法的順序(例如,Where 和 FirstOrDefault)是否會影響效能?

LINQ 擴充方法的順序(例如,Where 和 FirstOrDefault)是否會影響效能?

Patricia Arquette
發布: 2025-01-11 10:10:41
原創
438 人瀏覽過

Does the Order of LINQ Extension Methods (e.g., Where and FirstOrDefault) Impact Performance?

LINQ 擴充方法的順序

問題來源: LINQ 擴充方法的順序不會影響效能?

問題:

為什麼 LINQ 擴展方法的順序不會顯著影響效能?例如,比較以下兩個語句,人們可能會認為 Where 後面接著 FirstOrDefaultFirstOrDefault 後面跟著 Where 慢:

<code class="language-csharp">hugeList.Where(x => x.Text.Contains("10000")).FirstOrDefault();

hugeList.FirstOrDefault(x => x.Text.Contains("10000"));</code>
登入後複製

解答:

認為 Where 後面跟著 FirstOrDefault 會更慢的假設是錯誤的。 Where 不需要在取得第一個符合項之前找到所有符合項目。它按需檢索匹配項,這意味著如果只需要第一個匹配項,它會在找到第一個匹配項後停止。

為了說明這一點,想像以下場景:

有三個人參與:

  • A 持有一副洗好的牌。
  • B 穿著一件寫著「如果牌是紅色的」的襯衫。
  • C 對 B 說:「給我第一張牌。」

B 會重複向 A 要求牌,直到 A 提供一張紅牌。一旦獲得第一張紅牌,它就會交給 C,過程結束。 B 找到第一張紅牌後不需要繼續向 A 要求牌。

同樣,在 LINQ 語句中,Where 就像 B,過濾牌(列表中的項)以找到第一個匹配項。它不需要在返回第一個匹配項之前找到所有匹配項。

另一方面,如果擴充方法的順序顛倒,FirstOrDefault 後面跟著 Where,情況就不同了。 FirstOrDefault 需要檢索第一個項,然後 Where 需要應用其過濾器,這將涉及遍歷所有項。這將比 Where 後跟 FirstOrDefault 效率低。

因此,在決定 LINQ 擴展方法的效能影響時,請務必考慮應用它們的順序,因為它會根據所使用的特定方法影響操作的效率。

以上是LINQ 擴充方法的順序(例如,Where 和 FirstOrDefault)是否會影響效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板