2013-05-16 221 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快速回复 –