如何在分组查询上获得Linq返回计数作为列

本文关键字:返回 Linq 查询 | 更新日期: 2023-09-27 18:04:44

嗨,我正试图将TSQL转换为Linq在我的web api,但我没有得到正确的结果。我现有的TSQL是:

SELECT COUNT(a.Id) as total ,c.Name as classroom 
From Attendance a INNER JOIN Classroom c ON a.classroom = c.Id 
WHERE DropDate= '20160815'  
GROUP BY c.Name

我的尝试转换为LINQ已经如下:

这是更新后的LINQ(来自Siraj Mansour的回答)

 var name = (from a in dbContext.attendances
                        join c in dbContext.classrooms on a.Classroom equals c.Id
                        let classroom = c.Name
                        where (a.DropDate == today)
                        group a.Classroom by c.Name into g
                        select new
                        {
                            classroom = g.Key,
                            total = g.Count()
                        });

但问题是它没有返回相同的数据,每个教室返回的Total是500。如果有人可以让我知道我在这里做错了什么

如何在分组查询上获得Linq返回计数作为列

通过在dbContext.attendances.Count()上执行单独的"子查询",返回表中所有出席人数的计数。你要做的是Total = g.Count(),它给你每组的计数