2017-03-20 52 views
2

我是新來的,所以如果我犯了錯誤,我很抱歉。我編寫了以下SQL代碼來檢索特定教師中每個用戶的提交數量。需要幫助來編寫SQL查詢作爲LINQ表達式

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管理該查詢返回我期待的結果,但是在我的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。

回答

1

你交換的要組(值),什麼地點和什麼(鍵):

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(); 

還看到,當你被sEmail和分組nFaculty你不想也組通過sName,因爲那麼你可能會得到很多計數1。

+0

嗨吉拉德,很高興再次見到你:)但'g.Key.sName'不會在'選擇'工作。 –

+1

@IvanStoev - Yap :)很長一段時間不在這裏。而操作系統:)錯過了 - 原來的SQL不使用名稱的實際文字:) –

+0

非常感謝!管理得到它現在:) – Ale