2012-02-13 6 views
1

MVC 2を使用してグリッドを表示しています。このグリッドの最後に、さまざまな統計情報を表示したいと思います。グリッドの行のMVC 2 =計算とその他の統計

番号iはグリッドを表示するために使用していたコード部分は

<% foreach (var item in Model) 
     {%> 

      <tr> 
      <td> <%: item.tblCourse.CourseName %></td> 
      <td> <%: item.NeededHoursPerWeek %> </td> 
      <td> <%:item.tblCourseWantedHours.Sum(x=>x.WantedHoursPerWeek)%> </td> 
      <td> <%: item.NeededHoursPerWeek - item.tblCourseWantedHours.Sum(x => x.WantedHoursPerWeek)%> </td> 

     <td> 
      <% foreach (var i in item.tblCourseWantedHours) 

      { %> 
        <%: i.tblPerson.Surename %> 
      <% } %> 
     </td> 

      <td> <%: item.tblCourse.tblInstitute.InstituteName %> </td> 


      </tr> 
    <% } %> 

未満である一つの特定の列が一つの特定の列の値の 合計Nullである

行 数私はシンプルコントローラ

公共のActionResultインデックス(文字列学期) {

を持っています
 var allCoursesNeedHours = _pr.FindAllCourseNeededHoursInSemester(semester); 


     if (allCoursesNeedHours.Count() == 0) 
      return View("NotFound"); 


     return View(allCoursesNeedHours); 
    } 

とリポジトリで単純クエリ

公共のIQueryable FindAllCourseNeededHoursInSemester(ストリング学期)_db.tblCourseNeededHours ORDERBY allCourses.tblCourse.CourseName allCourses.Semesterは==学期選択allCoursesでallCoursesから {リターン。 }

私はすでに表示しているので、私はこれらの統計情報を取得するために変更する必要がありますどこに私を導くことができます。私はMVC 2を初めて使用しているので、結果を得るのが混乱しています。

答えて

0

LINQ-Max(), Sum(), Count(), etcのさまざまな集約拡張メソッドを使用できます。しかし、あなたのコントローラで、あるいはあなたのビジネスロジック層でこれを行うことをお勧めします。

モデルのカスタムクラスを作成し、その集計をプロパティとして追加することができます。例えば。

public ActionResult SomeAction() 
{ 
    var courses = _repository.GetCourses(); 
    var model = new YourModel(course){SomeAggregate = courses.Count(c => c.X == null)} 
    return View(model); 
} 
0

これには2通りの方法があります。モデルに必要な要素を追加して、カウントにバインドしてビューを返すか、必要な項目を追跡するforeach文にいくつかのカウンタを追加してから、これらのカウンタ値を結果。

var countRows = 0; 
<% foreach (var i in item.tblCourseWantedHours) 
{ %> 
    <%: i.tblPerson.Surename %> 
    countRows++; 
<% } %> 
</td> 

インスタンス

のために、新しい行表示

<td>Number of records <%= countRows %> 

または何であなたは、フィールドを呼びたいです。

また、コントローラーで行うことも、Linqを使用して集約を行うこともできます。

関連する問題