首頁 > 後端開發 > C++ > 如何使用 LINQ 執行左連線、分組和計算非空子記錄?

如何使用 LINQ 執行左連線、分組和計算非空子記錄?

Linda Hamilton
發布: 2025-01-08 20:01:43
原創
611 人瀏覽過

How to Perform a Left Join, Group By, and Count Non-Null Child Records using LINQ?

使用LINQ實現左連接、分組和非空子記錄計數

在SQL中,以下查詢在ParentTable和ChildTable兩個表之間執行左連接,併計算與每個父記錄關聯的子記錄數量:

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

將此查詢轉換為LINQ to SQL可以使用以下步驟:

  1. 使用JoinDefaultIfEmpty方法執行左連接:
from p in context.ParentTable
join c in context.ChildTable on p.ParentId equals c.ChildParentId into j1
from j2 in j1.DefaultIfEmpty()
登入後複製
  1. 依父ID分組結果:
group j2 by p.ParentId into grouped
登入後複製
  1. 統計與每個父記錄關聯的子記錄數量:
select new { ParentId = grouped.Key, Count = grouped.Count() }
登入後複製

然而,上述程式碼將傳回每個父記錄的子記錄總數,包括空值。若要僅計算非空子記錄,請修改Count表達式如下:

select new { ParentId = grouped.Key, Count = grouped.Where(t => t.ChildId != null).Count() }
登入後複製

這將確保僅計算ChildId不為空的子記錄。 最終的LINQ查詢將準確反映SQL查詢的邏輯,並有效地統計非空子記錄。

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

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