2016-12-07 39 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