[英]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.