Как бы этот запрос, используя внутреннее соединение, левое внешнее соединение, группировать по и два счета, был преобразован в linq?Левое внешнее соединение и множественные подсчеты SQL to LINQ
SELECT
c.EndowmentID,
COUNT(DISTINCT f.CriterionID) AS RequiredCriteria,
COUNT(r.ChoiceID) AS Response
FROM
Criteria c
INNER JOIN
Filters f
ON
c.ID = f.CriterionID
LEFT OUTER JOIN
Responses r
ON
f.ChoiceID = r.ChoiceID
WHERE
f.IsRequirement = 1
GROUP BY
c.EndowmentID;
Это то, что я сделал до сих пор:
var result =
from c in context.Criteria
join f in context.Filters on c.ID equals f.CriterionID
join r in context.Responses on f.ChoiceID equals r.ChoiceID into resfil
from rf in resfil.DefaultIfEmpty()
group rf by c.EndowmentID into grouped
select new
{
EndowmentID = grouped.Key,
Requirements = grouped.Count(t=>t.CriterionID),
Response = grouped.Count(t=>t.ChoiceID)
};
Что вы пробовали? Я дам вам подсказку, вы используете 'Where',' GroupBy', 'Select' и два' Join''s. Все это переводится непосредственно в LINQ. – evanmcdonnal
, пожалуйста, покажите нам, что у вас есть до сих пор - нам нужно увидеть, что вы приложили к нему какие-то усилия, и посмотрите, где именно вы застреваете. – user2366842
ok Я только что обновил – Talley