簡體   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