从 EF 获取平均值

sky*_*ake 1 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 ... ?
Run Code Online (Sandbox Code Playgroud)

编辑:Course表有一些nullScore未完成cources。

Nko*_*osi 6

来源:从数字序列返回平均值

鉴于分数可以为空,那么您应该只获取具有有效分数的记录

var avg = db.Courses
            .Where(c => c.StudentId == Id && c.Score != null)
            .Average(c => c.Score);
Run Code Online (Sandbox Code Playgroud)

如果您要查找每个学生的平均分数,则可以同时使用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()
                   });
Run Code Online (Sandbox Code Playgroud)