繁体   English   中英

如何将包含INNER JOIN,LEFT JOIN和GROUP BY的查询转换为类似的linq2sql查询?

[英]How to convert a query consisting of INNER JOIN, LEFT JOIN and GROUP BY to a similar linq2sql query?

我正在尝试将以下T-SQL查询转换为linq2sql。 无论我做什么,它都会通过交叉连接将其转换为一些令人讨厌的内容。 有什么建议吗?

给定表A,B,C

SELECT A.Id, A.Name, Pool.Total
FROM A
INNER JOIN B ON A.Id = B.AId
LEFT JOIN (
SELECT AId,
SUM(Quantity) as Total
FROM C 
GROUP BY AId) AS Pool ON A.Id = C.AId
WHERE Pool.Total < B.Threshold

我写了一个LINQ查询,它确实可以转换为APPLYs,但是执行计划看起来是一样的,并且批处理中的查询成本是50/50 ,所以我要说翻译后的查询是相同的(或者是同义词)。

linq查询是

from a in As 
join b in Bs on a.ID equals b.AID 
join  pool in (from c in Cs
                group c by c.AId into cG
                select new {AID = cG.Key,Total = cG.Sum(c=>c.Quantity)} ) on a.ID equals pool.AID into poolG
from pool in poolG.DefaultIfEmpty()
where pool.Total<b.Threshold 
select new {a.ID, a.Name, pool.Total}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM