如何在剃刀视图中使用linq实现GroupBy

时间:2016-12-07 00:15:44

标签: asp.net-mvc

如何在剃刀视图中实现此嵌套分组?

这就是我试过的

控制器

public ActionResult SeniorityList()
{
    var employee = db.Employees.GroupBy(f => f.Facility.FacilityName).ToList();
    return View(employee.ToList());
}

但是,我不知道如何在视图中实现foreach循环

1 个答案:

答案 0 :(得分:1)

由于您需要分组数据,我建议您为该

创建一个新类
public class GroupedItem
{
    public string GroupName { set; get; }
    public IEnumerable<Employee> Items { set; get; }
}

现在,您可以在db.Employees集合上使用GroupBy方法,并将结果投影到GroupedItem类对象的集合。

var grouped = db.Employees
                .GroupBy(f => f.Facility.FacilityName,i=>i,
                                (key,v)=>new GroupedItem  { GroupName = key,Items = v})
                .ToList();
return View(grouped);

grouped变量的类型将是GroupedItem的列表,我们将其传递给视图。因此,请确保您的视图是强类型为GroupedItem类的集合。

@model IEnumerable<GroupedItem>
@foreach (var group in Model)
{
    <h3>@group.GroupName</h3>
    foreach (var p in group.Items)
     {
         <p>@p.Name</p>
     }
}