2013-05-16 220 views
3

我在Linq查詢方面很新穎,我只是想將我的數據庫查詢轉換成Linq。將SQL轉換爲Linq查詢

這裏是我的簡單的SQL查詢:

var query = "SELECT EnrollmentDate, COUNT(*) AS StudentCount " 
      + "FROM Person " 
      + "WHERE EnrollmentDate IS NOT NULL " 
      + "GROUP BY EnrollmentDate"; 

var data = db.Database.SqlQuery<EnrollmentDateGroup>(query); 

這是工作正常,但怎麼可能有可能寫Linq中此查詢,我只是不能在group by語句轉換成Linq的。轉換成Linq似乎有點棘手。

任何人都可以幫助我嗎?

回答

10
var result = db.Person 
       .Where(r=> r.EnrollmentDate != null) 
       .GroupBy(r=> r.EnrollmentDate) 
       .Select(group=> new 
           { 
           EnrollmentDate = group.Key, 
           Count = group.Count() 
           }); 
+1

@MahmoudGamal,感謝編輯 – Habib

+0

thanx的烏拉圭回合的答案,但我得到一個'錯誤(xyzModel.SchoolContext不包含任何人defenition)'的疑問句已更新... PLZ再次看到它。 thanx –

+0

@ashok_damani,在你的模型中代表你的表'Person'的類是什麼?替換你的查詢 – Habib

15
var query = from row in db.Person 
      where row.EnrollmentDate != null 
      group row by row.EnrollmentDate into grp 
      select new { 
       EnrollmentDate = grp.Key, 
       Count = grp.Count() 
      }; 
+0

我猜查詢表達式是超級酷:P – Habib

+0

多數民衆贊成酷!!! @馬克Gravell,thnx爲你的答案,但我一直在尋找Linq lamda表達式作爲Habib的答案,但無論如何thanx 4快速回復 –