获得EF的平均价值

时间:2016-10-06 01:18:43

标签: c# asp.net-mvc entity-framework

我有两张表StudentCourse

表格Course使用StudentId作为FK密钥。在Course表内,学生所选择的每门课程都有Score

现在,如何计算与Score相关的总平均StudentId

这是我得到了多远(Id =学生ID):

var avg = db.Courses.Where(c=> c.StudentId == Id ... ?

修改Course表在null中有一些Score表示未完成的资源。

1 个答案:

答案 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);

如果您要查找每位学生的平均分数,那么您可以同时使用GroupByAverage

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()
                   });