В ролях лямбда-версия.

исал этот запрос SQL с несколькимиJOIN (включаяLEFT JOIN).
Это дает мне ожидаемый результат.

SELECT DISTINCT c.Id, 
       c.Title, 
       COUNT(v.Id) AS 'Nb_V2',
       COUNT(DISTINCT v.IdUser) AS 'Nb_V1',
       r.cnt AS 'Nb_R'
FROM TABLE_C c
JOIN TABLE_V v on c.Id = v.Id
LEFT JOIN ( 
    SELECT Id, COUNT(*)  AS cnt 
    FROM TABLE_R 
    GROUP BY Id
) r ON c.Id = r.Id
WHERE c.IdUser = '1234'
GROUP BY c.Id, c.Title, r.cnt

Тем не менее, «Мне бы хотелось, чтобы Linq-эквивалент этого запроса был помещен на уровень доступа к данным моего приложения.

Я попробовал что-то вроде:

var qResult = from c in dbContext.TABLE_C
              join v in dbContext.TABLE_V on c.IdC equals v.IdC
              join r in dbContext.TABLE_R on v.IdC equals r.IdC into temp
              from x in temp.DefaultIfEmpty()
              group x by new { c.IdC, c.Title /*miss something ?*/} into grouped
              select new
              {
                  IdC = grouped.Key.IdC,          --good result
                  Title = grouped.Key.Title,      --good result
                  NbR = grouped.Distinct().Count(t => t.IdC > 0), --good, but "t.Id > 0" seems weird
                  Count = --I'm lost. No idea how to get my COUNT(...) properties (Nb_V1 and Nb_V2)
              };

Я пытался приспособитьсяэтот ТАК вопрос но я не могу понять это. Я потерян сCount внутри сгруппированного подзапроса.
Может кто-нибудь объяснить мне, где я не прав?

Совет от профессионала: бонус, если кто-то может написать эквивалент с лямбда-выражением

Ответы на вопрос(1)

Ваш ответ на вопрос