需要帮助以linq表达式形式编写SQL查询吗

需要帮助以linq表达式形式编写SQL查询吗,sql,asp.net,sql-server,linq,Sql,Asp.net,Sql Server,Linq,我是新来的,所以如果我犯了任何错误,我道歉。我编写了以下SQL代码来检索特定学院中每个用户提交的数据 declare @faculty as int = 1 SELECT COUNT(ew_student.sName) AS Submissions, ew_student.sEmail, ew_faculty.nFaculty FROM ew_student INNER JOIN ew_submission ON ew_student.sId = ew_submission.sId INNER

我是新来的,所以如果我犯了任何错误,我道歉。我编写了以下SQL代码来检索特定学院中每个用户提交的数据

declare @faculty as int = 1
SELECT COUNT(ew_student.sName) AS Submissions, ew_student.sEmail, ew_faculty.nFaculty
FROM ew_student 
INNER JOIN ew_submission ON ew_student.sId = ew_submission.sId INNER JOIN
                            ew_faculty ON ew_student.sFaculty = ew_faculty.fId
WHERE ew_faculty.fId = @faculty
GROUP BY ew_student.sEmail, ew_faculty.nFaculty
通过MS SQL Server Management运行此查询将返回我期望的结果,但是在我的ASP.NET web应用程序上,我在编写LINQ表达式时遇到困难

我的数据库上下文称为“db”。这是我到目前为止得到的结果,但它返回了错误的结果

var stats = from ew_submissions in db.ew_submissions
            where ew_submissions.ew_student.ew_faculty.fId == facultyId
            group new { ew_submissions.ew_student, ew_submissions.ew_student.ew_faculty } by new
            {
                ew_submissions.ew_student.sEmail,
                ew_submissions.ew_student.sName,
                ew_submissions.ew_student.ew_faculty.nFaculty

            } into g
            select new
            {
                Submissions = g.Count(),
                g.Key.sName


            };

return stats.ToList();

我想检索特定用户提交了多少次,但是上面的LINQ表达式总是为每个用户返回1

您切换了要分组的内容(值)和按内容(键)分组的位置:


还可以看到,当您按照
sEmail
nFaculty
进行分组时,您不希望也按照
sName
进行分组,因为这样您可能会得到很多计数1的结果。

Hi Gilad,很高兴再次见到你:)但是
g.Key.sName
select
@IvanStoev-Yap:)不在这里很长时间了。和ops:)遗漏了这一点-原始SQL不使用名称的实际文本:)
var stats = from ew_submissions in db.ew_submissions
            where ew_submissions.ew_student.ew_faculty.fId == facultyId
            group ew_submissions.ew_student.sName by new
            {
                ew_submissions.ew_student.sEmail,
                ew_submissions.ew_student.ew_faculty.nFaculty
            } into g
            select new
            {
                Submissions = g.Count(),
                g.Key.sName
            };

return stats.ToList();