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