首頁 >後端開發 >C++ >LINQ 中的流暢語法與查詢運算式:何時該使用哪一個?

LINQ 中的流暢語法與查詢運算式:何時該使用哪一個?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-27 08:21:08445瀏覽

Fluent Syntax vs. Query Expression in LINQ: When Should I Use Which?

LINQ 查詢:流暢語法與查詢表達式對比

LINQ 提供了兩種查詢方式:流暢語法和查詢表達式語法。兩者都能實現查詢操作,但在適用場景上有所不同。

流暢語法 (Fluent Syntax)

流暢語法類似於 C#,通過方法鏈來構建查詢。對於簡單的查詢,它通常更簡潔,並能訪問所有查詢操作符。

查詢表達式語法 (Query Expression Syntax)

查詢表達式語法類似於 SQL,更易於閱讀和使用。它在需要多個範圍變量的場景中表現出色,例如使用 "let" 關鍵字、多個生成器或連接查詢。

示例:多個範圍變量

以下是一個使用查詢表達式語法的示例:

<code class="language-csharp">from fullName in fullNames
from name in fullName.Split()
orderby fullName, name
select name + " came from " + fullName;</code>

使用流暢語法,則需要這樣寫:

<code class="language-csharp">fullNames
  .SelectMany(fName => fName.Split().Select(name => new { name, fName }))
  .OrderBy(x => x.fName)
  .ThenBy(x => x.name)
  .Select(x => x.name + " came from " + x.fName);</code>

很明顯,在涉及多個範圍變量的情況下,查詢表達式語法更清晰易懂。

混合使用

為了結合兩種語法的優勢,可以在 LINQ 查詢中混合使用它們。例如:

<code class="language-csharp">var query =
  from c in db.Customers
  let totalSpend = c.Purchases.Sum(p => p.Price)    // 此处使用方法语法
  where totalSpend > 1000
  from p in c.Purchases
  select new { p.Description, totalSpend, c.Address.State };</code>

此示例在 "Sum" 操作中使用了方法語法,同時保留了查詢表達式語法在整體查詢中的可讀性。 選擇哪種語法取決於具體場景和個人偏好,靈活運用兩種語法可以提高代碼的可讀性和效率。

以上是LINQ 中的流暢語法與查詢運算式:何時該使用哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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