2009-07-21 85 views
17

在像Crystal Reports這樣的報表工具中,可以採用非規格化數據並將其按數據中的特定列分組,從而爲指定列中的每個唯一項目創建行標題。如何在ASP.NET MVC視圖中分組數據?

如果我有這樣的:

Category1 Data1 
Category1 Data2 
Category1 Data3 
Category2 Data4 
Category2 Data5 
Category2 Data6 

報告軟件將組這樣的:

Category1 
     Data1 
     Data2 
     Date3 
Category2 
     Data4 
     Data5 
     Data6 

有沒有辦法做到這在ASP.NET MVC視圖,也許使用簡單的linq短語或linq擴展方法與foreach或嵌套的foreach?

回答

40

如果你的看法是強類型,你可以使用LINQ的GroupBy擴展方法與嵌套的foreach:

<ul> 
<% foreach (var group in Model.GroupBy(item => item.Category)) { %> 

    <li><%= Html.Encode(group.Key) %> 
    <ul> 

    <% foreach (var item in group) { %> 
     <li><%= Html.Encode(item.Data) %></li> 
    <% } %> 

    </ul> 
    </li> 

<% } %> 
</ul> 

這將提供輸出很像原來的問題你的格式列表。它假定你的模型看起來像這樣:

public class ViewModel 
{ 
    public string Category { get; set; } 
    public string Data { get; set; } 
} 
相關問題