如何將以下sql查詢轉換爲LINQ?如何將這段SQL轉換爲LINQ?
SELECT COUNT(*) FROM (SELECT SUM(bdi.Amount)-SUM(di.Debit -di.Credit) AS Remaining
FROM Acc.DocItem di
INNER JOIN (SELECT bdi.SLRef,bdi.DL,bdi.DL2,bdi.DL3,bdi.DL4,bdi.DL5,bdi.DL6,bdi.DL7,bdi.Amount,bhdr.StartDate,bhdr.EndDate FROM
Budget.BudgetDocItem bdi INNER JOIN Budget.BudgetDocHeader bhdr ON bhdr.Id = bdi.BudgetDocHeaderRef) AS bdi
ON
(bdi.SLRef IS NULL AND di.SLRef IS NULL) OR bdi.SLRef = di.SLRef AND
(bdi.DL IS NULL AND di.DL IS NULL) OR bdi.DL = di.DL AND
(bdi.DL2 IS NULL AND di.DL2 IS NULL) OR bdi.DL2 = di.DL2 AND
(bdi.DL3 IS NULL AND di.DL3 IS NULL) OR bdi.DL3 = di.DL3 AND
(bdi.DL4 IS NULL AND di.DL4 IS NULL) OR bdi.DL4 = di.DL4 AND
(bdi.DL5 IS NULL AND di.DL5 IS NULL) OR bdi.DL5 = di.DL5 AND
(bdi.DL6 IS NULL AND di.DL6 IS NULL) OR bdi.DL6 = di.DL6 AND
(bdi.DL7 IS NULL AND di.DL7 IS NULL) OR bdi.DL7 = di.DL7
GROUP BY di.SLRef ,di.DL ,di.DL2 ,di.DL3 ,di.DL4 ,di.DL5 ,di.DL6 ,di.DL7,di.DocCreateDate,bdi.StartDate,bdi.EndDate,di.State
HAVING di.State!=1 AND di.DocCreateDate BETWEEN bdi.StartDate AND bdi.EndDate
) AS r
WHERE r.Remaining<0
當我想這一塊的SQL轉換爲LINQ(蒙山Linqer),我收到此錯誤:
SQL cannot be converted to LINQ: OR cannot be used in (SELECT bdi.SLRef,bdi.DL,bdi.DL2,bdi.DL3,bdi.DL4,bdi.DL5,bdi.DL6,bdi.DL7,bdi.Amount,bhdr.StartDate,bhdr.EndDate FROM Budget.BudgetDocItem bdi INNER JOIN Budget.BudgetDocHeader bhdr ON bhdr.Id = bdi.BudgetDocHeaderRef) AS bdi ON (bdi.SLRef IS NULL AND di.SLRef IS NULL) OR bdi.SLRef = di.SLRef AND (bdi.DL IS NULL AND di.DL IS NULL) OR bdi.DL = di.DL AND (bdi.DL2 IS NULL AND di.DL2 IS NULL) OR bdi.DL2 = di.DL2 AND (bdi.DL3 IS NULL AND di.DL3 IS NULL) OR bdi.DL3 = di.DL3 AND (bdi.DL4 IS NULL AND di.DL4 IS NULL) OR bdi.DL4 = di.DL4 AND (bdi.DL5 IS NULL AND di.DL5 IS NULL) OR bdi.DL5 = di.DL5 AND (bdi.DL6 IS NULL AND di.DL6 IS NULL) OR bdi.DL6 = di.DL6 AND (bdi.DL7 IS NULL AND di.DL7 IS NULL) OR bdi.DL7 = di.DL7 INNER JOIN
如果你想要將SQL轉換爲Linq,請顯示您的linq嘗試。使用自動化工具,失敗,只是發佈一個問題並不是真的嘗試.. –
而linq不支持連接中的'或'。以前有關於如何解決它的問題(我已經回答了一些問題) –
是否絕對有必要讓Linq查詢成爲可能,因爲您也可以使用DbContext。 – Rob