【问题标题】:How to calculate average grade from data in SQL如何根据 SQL 中的数据计算平均成绩
【发布时间】:2016-04-15 06:43:11
【问题描述】:

在数据库中我有一个表Grade(stGrade, ndGrade, rdGrade, Avg)

如何在 asp.net 项目中计算AvgstGrade, ndGrade, rdGrade 可以为空。

例如,如果Grade(80, 90, null),则Avg = 85。如果Grade(80, 90, 100),则Avg = 90。

看来,我的代码:

@foreach (var item in Model.Grades){
        <tr>
            <td>@item.stGrade</td>
            <td>@item.ndGrade</td>
            <th>@item.rdGrade</th>
            <th>@item.Avg</th> 
        </tr>
    }

在控制器中:

 public ActionResult Result()
    {
        db = new GradeManagementEntities();
        Student st = db.Students.Find(Session["id"].ToString());
        return View(st);
    }

如何使用 Average()?可能在课堂上吧?

public Nullable<double> stGrade { get; set; }
    public Nullable<double> ndGrade { get; set; }
    public Nullable<double> rdGrade { get; set; }
    public Nullable<double> Avg{get; set;}
    public virtual Student Student { get; set; }

但是我不知道怎么用。

【问题讨论】:

  • 使用 linq .Average() 查询。
  • 您的代码不清楚...在查看代码中,您使用的是Model.Grade,但在您的控制器代码中,您正在向视图发送Student...最后的代码部分?学生 ?成绩?
  • 我的错误,特别是学生类有一个外键 idStudent 类 'Grade(idStudent, stGrade, ndGrade, rdGrade)'。首先查看:参考@model Assignment_GradeManagement.Models.Studnet。对不起,因为我是新手。

标签: asp.net-mvc ado.net-entity-data-model


【解决方案1】:
public ActionResult Result()
{
    db = new GradeManagementEntities();
    Student st = db.Students.Find(Session["id"].ToString());
foreach(var s in st)
{
int total=0,avg=0;
if(s.ndGrade != null)
{
total++;
avg+=s.ndGrade;
}
if(s.stGrade!= null)
{
total++;
avg+=s.stGrade;
}
if(s.rdGrade!= null)
{
total++;
avg+=s.stGrade;
}
if(total>0)
{
s.avg= avg/total;
}
}
return View(st);

【讨论】:

    猜你喜欢
    • 2019-08-25
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多