EF中的GroupBy方法是用来实现sql语句中的group by的。
但是要注意,GroupBy方法要写在Select方法的前面!否则获取到的数据难以转化为C#中的实体
例如 一个员工表 Worker 字段如下
主键:ID 姓名:Name 性别:Gender 年龄:Age
这里需要统计不同性别的员工数量
_db.Workers.GroupBy(x=>{Gender=x.Gender}).Select(x=>
new GenderNum(){
Gender=x.Key.Gender,
GenderNum=x.Count()
}).ToList();
如果需要按照性别+年龄进行统计(多字段统计)
_db.Workers.GroupBy(x=>new {Gender=x.Gender, Age=x.Age}).Select(x=>
new MultiCount(){
Gender=x.Key.Gender,
Age=x.Key.Age,
GenderNum=x.Count()
}).ToList();
GroupBy有个很好用的地方,就是检查列表是否有重复项
代码:if (list.GroupBy(x => x.Name).Where(x => x.Count() > 1).Count() > 0)