我有两张表Student
和Course
。
表格Course
使用StudentId
作为FK密钥。在Course
表内,学生所选择的每门课程都有Score
。
现在,如何计算与Score
相关的总平均StudentId
?
这是我得到了多远(Id
=学生ID):
var avg = db.Courses.Where(c=> c.StudentId == Id ... ?
修改:Course
表在null
中有一些Score
表示未完成的资源。
答案 0 :(得分:2)
来源:Return the Average Value From a Numeric Sequence
鉴于分数可以为空,那么您应该只获取具有有效分数的记录
var avg = db.Courses
.Where(c => c.StudentId == Id && c.Score != null)
.Average(c => c.Score);
如果您要查找每位学生的平均分数,那么您可以同时使用GroupBy
和Average
。
var avgerages = db.Courses
.Where(c => c.Score != null)
.GroupBy(g => g.StudentId, c => c.Score )
.Select(g => new
{
StudentId = g.Key,
Average = g.Average()
});