使用多個(gè)聯(lián)接、計(jì)數(shù)和左聯(lián)接的SQL到LINQ我用多個(gè)JOIN(包括LEFT JOIN).它給了我預(yù)期的結(jié)果.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 cJOIN TABLE_V v on c.Id = v.IdLEFT JOIN (
SELECT Id, COUNT(*) AS cnt
FROM TABLE_R
GROUP BY Id) r ON c.Id = r.IdWHERE c.IdUser = '1234'GROUP BY c.Id, c.Title, r.cnt不過,我想要這個(gè)請求的Linq等價(jià)物,把它說成是我應(yīng)用程序的數(shù)據(jù)訪問層。我試過這樣的方法: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)
};我試著適應(yīng)這個(gè)問題但我搞不懂。我迷失了Count在被攻擊的子請求中。有人能解釋我哪里錯(cuò)了嗎?小貼士:如果有人能用lambda表達(dá)式寫出等價(jià)物的話,那就加分了。
使用多個(gè)聯(lián)接、計(jì)數(shù)和左聯(lián)接的SQL到LINQ
尚方寶劍之說
2019-06-12 17:03:25