2016-12-07 44 views
0

这个嵌套分组如何在剃刀视图中实现?如何在剃刀视图中使用linq实现GroupBy

这是我曾尝试

控制器

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

但是我不知道如何实现鉴于

+0

没有必要'.ToList()'两次。但是在任何情况下,你都应该对数据进行分组,因此它应该是'.ToDictionary()' - '.GroupBy()'返回一个'IEnumerable >' –

+0

请注意,model-view-controller标签是关于模式的问题。 ASP.NET-MVC实现有一个特定的标签。 –

回答

1

foreach环既然你想要的分组数据,我建议你创建一个新类为

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> 
    } 
} 
+0

谢谢,我是新来的网站,请原谅我 – user5771351

+0

这个类可以嵌套groupBy,我的意思是有两个或三个字段分组 – user5771351