gpt4 book ai didi

.net - 在包含计数的子查询上使用左连接的 Linq

转载 作者:行者123 更新时间:2023-12-04 06:13:50 24 4
gpt4 key购买 nike

我很难将 sql 转换为 linq 语法。

我有 2 个表(Category 和 CategoryListing),它们用 CategoryID 相互引用。我需要获取 Category 表中所有 CategoryID 的列表以及 CategoryListing 表中所有相应匹配项的 CategoryID 计数。如果 CategoryID 不存在于 CategoryListing 中,则仍应返回 CategoryID - 但频率为 0。

以下 sql 查询演示了预期结果:

SELECT c.CategoryID, COALESCE(cl.frequency, 0) as frequency
FROM Category c
LEFT JOIN (
SELECT cl.CategoryID, COUNT(cl.CategoryID) as frequency
FROM CategoryListing cl
GROUP BY cl.CategoryID
) as cl
ON c.CategoryID = cl.CategoryID
WHERE c.GuideID = 1

最佳答案

未经测试,但这应该可以解决问题:

var q = from c in ctx.Category
join clg in
(
from cl in ctx.CategoryListing
group cl by cl.CategoryID into g
select new { CategoryID = g.Key, Frequency = g.Count()}
) on c.CategoryID equals clg.CategoryID into cclg
from v in cclg.DefaultIfEmpty()
where c.GuideID==1
select new { c.CategoryID, Frequency = v.Frequency ?? 0 };

关于.net - 在包含计数的子查询上使用左连接的 Linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/560453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com