Comment faire pour convertir la requête SQL suivante à LINQ?Comment convertir ce morceau de SQL en 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
Quand je suis en train de convertir ce morceau de SQL LINQ (cinque Linqer), j'ai reçu cette erreur:
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
Si vous voulez pour convertir SQL en Linq alors s'il vous plaît montrer votre tentative linq. Utiliser un outil automatisé, échouer, et juste poster une question n'est pas vraiment essayer .. –
Et linq ne supporte pas 'or' dans les jointures. Il ya une question précédente sur la façon de le résoudre (j'en ai répondu moi-même) –
Est-il absolument nécessaire de faire une requête Linq parce que vous pouvez utiliser DbContext avec vous aussi SQL. – Rob