2009-07-21 9 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のビューでこれを行う方法がありますforeachまたはネストされたforeachを使った簡単なlinqフレーズまたはlinq拡張メソッド?あなたのビューが強く型付けされた場合

答えて

40

、ネストされたのforeachでLINQ GROUPBY拡張メソッドを使用することができます。

<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; } 
} 
関連する問題