2014-04-23 75 views
0

我想下面的SQL查询转换为LINQ,查询与LEFT JOIN和计数

SELECT 
C.CategoryId 
, CategoryName 
,COUNT(DISTINCT I.ItemId) 
FROM 
Categories C 
    LEFT JOIN Items I 
     ON I.CategoryId = C.CategoryId AND I.SubCategoryId = 1 
GROUP BY C.CategoryId, C.CategoryName 

需要的所有类别,即使该项目数为0

回答

2

使用组加入,它应该看起来像这样...

var result = Categories 
       .GroupJoin(
        Items.Where(i => i.SubCategoryId == 1), 
        c => c.CategoryId, 
        i => i.CategoryId, 
        (c, i) => new { c.CategoryId, c.CategoryName, i.Count() })