Как преобразовать запрос, состоящий из INNER JOIN, LEFT JOIN и GROUP BY, в аналогичный запрос linq2sql? - PullRequest
1 голос
/ 11 октября 2010

Я пытаюсь преобразовать следующий запрос 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

1 Ответ

1 голос
/ 11 октября 2010

Я написал запрос LINQ, который действительно переводится в APPLY, но план выполнения выглядит одинаково, а стоимость запроса в пакете составляет 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}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...