首頁 > 後端開發 > C++ > 如何使用 LINQ to SQL 執行左連線、分組和計數?

如何使用 LINQ to SQL 執行左連線、分組和計數?

Linda Hamilton
發布: 2025-01-08 20:17:49
原創
233 人瀏覽過

How to Perform a Left Join, Group By, and Count with LINQ to SQL?

LINQ to SQL:左連接、分組依據和計數

此範例示範如何使用 LINQ to SQL 執行左聯結、分組依據和計數操作,鏡像特定 SQL 查詢的功能。

SQL 查詢:

以下 SQL 查詢作為我們 LINQ 翻譯的目標:

SELECT p.ParentId, COUNT(c.ChildId)
FROM ParentTable p
LEFT OUTER JOIN ChildTable c ON p.ParentId = c.ChildParentId
GROUP BY p.ParentId
登入後複製

此查詢連接 ParentTableChildTable,計算每個父級的子記錄,並處理父級沒有子級的情況(使用 LEFT OUTER JOIN)。

LINQ to SQL 等效項:

等效的 LINQ to SQL 查詢使用 join 子句、DefaultIfEmpty() 進行左連接行為 group by 以及帶有謂詞的 Count() 方法以僅對非空子 ID 進行計數:

var query = from p in context.ParentTable
            join c in context.ChildTable on p.ParentId equals c.ChildParentId into j1
            from j2 in j1.DefaultIfEmpty()
            group j2 by p.ParentId into grouped
            select new { 
                ParentId = grouped.Key, 
                ChildCount = grouped.Count(t => t.ChildId != null) 
            };
登入後複製

此 LINQ 查詢實作與 SQL 查詢相同的結果。 into j1from j2 in j1.DefaultIfEmpty() 組合正確實現了左外連接。 group by 子句按 ParentId 將結果分組,而 Count() 方法使用條件 (t => t.ChildId != null) 確保僅對現有子記錄進行計數。 匿名類型 new { ParentId, ChildCount } 建立最終結果集。

這清楚簡潔地將 SQL 查詢的邏輯轉換為可讀且可維護的 LINQ 表達式。

以上是如何使用 LINQ to SQL 執行左連線、分組和計數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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