2016-04-15 7 views
0

berechnen In der Datenbank habe ich eine Tabelle Grade(stGrade, ndGrade, rdGrade, Avg).Wie Durchschnittsnote aus Daten in SQL

Wie kann ich Avg in asp.net Projekt berechnen und stGrade, ndGrade, rdGrade kann null sein.

Beispiel, wenn Grade(80, 90, null) dann Avg = 85. Wenn Grade(80, 90, 100) dann Avg = 90.

In Anbetracht, mein Code:

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

Und in der Steuerung:

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

Wie kann Ich benutze Durchschnitt()? Im Unterricht vielleicht, oder?

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

Aber ich weiß nicht, wie man es benutzt.

+0

Verwenden Sie eine linq '.Average()' -Abfrage. –

+0

Ihr Code ist nicht klar ... In View-Code verwenden Sie 'Model.Grade', aber in Ihrem Controller-Code senden Sie einen' Student' an die Ansicht ... Und was ist die Klasse im letzten Code-Abschnitt? Schüler ? Noten? – MrPixel6

+0

Meine flault, insbesondere Student-Klasse haben einen Fremdschlüssel idStudent der Klasse 'Grade (idStudent, stGrade, ndGrade, rdGrade)'. Zuerst im Blick: Referenzen @Model Assignment_GradeManagement.Models.Studnet. Sorry, weil ich Neuling bin. – Sherry

Antwort

0
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);