使用LINQ将join和group组合在一起

时间:2015-06-02 10:20:43

标签: c# linq join linq-group

我无法显示这样的表格

classId      class name    frequency
1            basic one      2
2            basic two      1

我有一个这样的模型用于显示频率,classsId和类名。 classsId是类表中的主键,studentDetails table.className中的外键是在类表中

public int ClasssId { get; set; }       
public int ClassCount { get; set; }

我创建了一个动作方法来从数据库和组中获取数据

public ActionResult ClasssStatistics()
{
     IQueryable<ClassStatistics> data = from st in db.StudentDetailss
     group st by st.ClasssId into classsGroup
     select new ClassStatistics()
     {
         ClasssId = classsGroup.Key,
         ClassCount = classsGroup.Count()
     };
     return View(data.ToList());
 }

这是我的观点和我生成的结果

<thead>
     <tr>
        <th>Class Id</th>
              <th>Frequency</th>
     </tr>
</thead>

<tbody>
   @foreach (var item in Model)
   {
       <tr class="odd gradeX">
           <td>@Html.DisplayFor(modelitem => item.ClasssId)</td>
           <td>@item.ClassCount</td>
       </tr>
   }
</tbody>

结果

classs Id      frequency
1                2
2                1

1 个答案:

答案 0 :(得分:0)

这有点顽皮,但是如果你确信这些课程在整个课程中是相同的,那么你可以从小组中获得第一个课程 - 总会有一个,否则小组就不会存在。

public ActionResult ClasssStatistics()
{
    IQueryable<ClassStatistics> data = from st in db.StudentDetailss
                                       group st by st.ClasssId into classsGroup
                                select new ClassStatistics()
                                {
                                    ClassId = classsGroup.Key,
                                    ClassName = classsGroup.First().ClassName,
                                    ClassCount = classsGroup.Count()
                                };
    return View(data.ToList());

}