Linq to sql MVC 2=计数和其他统计数据

Linq to sql MVC 2=计数和其他统计数据,linq-to-sql,asp.net-mvc-2,Linq To Sql,Asp.net Mvc 2,我正在使用MVC2并显示一个网格。现在在这个网格的末尾,我想显示不同的统计数据,例如 网格中的行数 一个特定列为空的行数 一个特定列中的值之和 下面是我用来显示网格的代码部分 <% foreach (var item in Model) {%> <tr> <td> <%: item.tblCourse.CourseName %></td> <

我正在使用MVC2并显示一个网格。现在在这个网格的末尾,我想显示不同的统计数据,例如

网格中的行数 一个特定列为空的行数 一个特定列中的值之和

下面是我用来显示网格的代码部分

 <% 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>
    <% } %> 
以及存储库中的一个简单查询

公共IQueryable FindAllCoursedHoursInsester(字符串学期) { 从_db.tblcourseNeedHours中的所有课程返回,按allCourses.tblCourse.CourseName排序,其中allCourses.Se学期==学期选择所有课程; }


我已经显示了视图代码,请您指导我在哪个位置进行更改以获取这些统计信息。因为我是MVC2新手,所以我对结果感到困惑

您可以对LINQ-使用各种聚合扩展方法。但我建议您在控制器中执行此操作,或者在业务逻辑层中执行更好的操作

可以为模型创建自定义类,并将聚合添加为属性。例如

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

你可以用几种不同的方法来做。将您想要的元素添加到模型中,以便可以将它们绑定到计数并随视图返回它们,或者可以将一些计数器添加到foreach语句中,该语句跟踪您需要的项,然后将这些计数器值显示为结果。比如说

var countRows = 0;
<% foreach (var i in item.tblCourseWantedHours) 
{ %>
     <%: i.tblPerson.Surename %>
     countRows++;
<% } %>
</td>
var countRows=0;
countRows++;
然后在新行中显示

<td>Number of records <%= countRows %>
记录数
或者随便你怎么称呼这个领域

您还可以在控制器中执行此操作,或者使用Linq执行一些聚合

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