LINQ - 加入Group By并获得平均值

时间:2011-08-03 15:35:16

标签: c# linq-to-entities

SQL:

SELECT DeptId,avg(Marks) FROM StudentTb s
JOIN StudInDepartment d on s.StudentId = d.StudentId
GROUP BY DeptId

转换为Linq:

  var deptRpts =         from s in this.ObjectContext.StudentTb
                         join d in this.ObjectContext.StudInDepartment on s.StudentId equals d.StudentId  
                         group s by d.DeptId into grp
                         select new {
                             DeptId = grp.Key,
                             AverageMarks = grp.Average(ed=>ed.Marks)
                         };

获得一个空的结果列表。

在调试模式下扩展结果集时。显示错误功能评估超时

需要帮助。

1 个答案:

答案 0 :(得分:7)

查询工作得很好,至少在我的模拟中我只是扔在一起......它可能与数据库的结构有关...在我的模拟中我将studentID作为外国人StudInDepartment(ha!)表的关键,甚至这个简化的查询也能正常工作

var deptRpt2 = from d in ctx.StudInDepartment
   group d by d.DeptId into grp
   select new {
      Dept = grp.Key,
      AverageMarks = grp.Average(ed=>ed.StudentTb.Marks)
   };

您收到的消息“功能评估超时”可能是Visual Studio debugger issue,无法帮助您,还有其他线程关闭了stackoverflow讨论它。