将join和group结合使用LINQ

本文关键字:LINQ 结合 group join | 更新日期: 2023-09-27 17:52:15

我不能像这样显示一个表

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

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

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

创建一个action方法从数据库和组

中获取数据
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

将join和group结合使用LINQ

这有点顽皮,但是如果你确信所有的类都是一样的,那么你可以从组中取第一个——总有一个,否则组就不存在了。

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