2014-01-08 105 views
-3

有人可以幫我這個轉換到SQL LINQ或lambda C#轉換到這個LINQ或lambda C#

select 
    count(s.ClassId) [StudentInClass], c.Name [Class], t.Name [teacher] 
from 
    [dbo].[Students] s 
inner join 
    class c on s.ClassId = c.Id 
inner join Teacher t 
    on t.Id = c.TeacherId 
group by 
    s.ClassId, c.Name, t.Name 

到目前爲止,這是我的,我搞亂它。我想達到同樣的結果在我的SQL查詢

 SchoolEntities db = new SchoolEntities(); 

     var StudentsByCourseId = from s in db.Students 
      join c in db.Classes on s.ClassId equals c.Id 
      join t in db.Teachers on c.TeacherId equals t.Id 
      group c by s.ClassId 
      into g 
      select g; 

在SQL這是我的reults樣子,它由老師來計算某個班級的學生

 
      StudentCount Class  Teacher 
      1    Geography Teacher1 
      1    Biology  Teacher1 
      2    Maths  Teacher2 

+1

您使用的是Entity Framework嗎?哪些是實體本身? –

+5

詢問代碼的問題必須證明對正在解決的問題有最少的瞭解。包括*嘗試解決方案*,爲什麼他們沒有工作,以及預期的結果。 –

+1

LINQ到什麼? LINQ to SQL? LINQ to Entities?你的上下文是如何設置的?你已經嘗試了什麼? – MarcinJuraszek

回答

1

您可以使用匿名類按多個屬性進行分組。

var StudentsByCourseId = from s in db.Students 
      join c in db.Classes on s.ClassId equals c.Id 
      join t in db.Teachers on c.TeacherId equals t.Id 
      group s by new { s.ClassId, Class = c.Name, Teacher = t.Name } 
      into g 
      select new 
      { 
       StudentInClass = g.Count(), 
       g.Key.Class, 
       g.Key.Teacher, 
      }; 
+1

我改變了這個以適應我的需要,結果貼在原文中。因爲它不會讓我發佈自己的答案8小時 – user1379916