首頁 > 後端開發 > C++ > 如何透過分組來準確統計 LINQ 左連接中的子記錄?

如何透過分組來準確統計 LINQ 左連接中的子記錄?

Barbara Streisand
發布: 2025-01-08 20:31:55
原創
277 人瀏覽過

How to Accurately Count Child Records in a LINQ Left Join with Grouping?

掌握 LINQ:透過分組進行左連接中的準確子記錄計數

將 SQL 查詢轉換為 LINQ to SQL 可能很棘手,特別是在處理左連接、分組和準確記錄計數等複雜場景時。 此範例示範如何透過分組正確計算左連接中的子記錄,解決常見陷阱。

考慮這個 SQL 查詢:

<code class="language-sql">SELECT p.ParentId, COUNT(c.ChildId)
FROM ParentTable p
LEFT OUTER JOIN ChildTable c ON p.ParentId = c.ChildParentId
GROUP BY p.ParentId</code>
登入後複製

簡單的 LINQ 翻譯可能會忽略處理空值的關鍵細節:

<code class="language-csharp">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, Count = grouped.Count() }</code>
登入後複製

這種方法錯誤地計算了空值。 解在於修改 Count() 方法,濾掉 null ChildId 值:

<code class="language-csharp">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, Count = grouped.Count(t => t.ChildId != null) }</code>
登入後複製

這個精煉的 LINQ 查詢僅準確地計算非空 ChildId 值,為每個父記錄提供正確的子記錄計數。 請記住在 LINQ to SQL 中使用左聯接和聚合函數時始終考慮空值,以確保資料完整性。

以上是如何透過分組來準確統計 LINQ 左連接中的子記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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