Crystal Reportsなどのレポートツールでは、非正規化されたデータを取得してデータ内の特定の列ごとにグループ化し、指定された列の一意のアイテムごとに行見出しを作成する方法があります。
私がこれを持っている場合:
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拡張メソッドを使用しますか?
ビューが強く型付けされている場合は、ネストされたforeachでLINQGroupBy拡張メソッドを使用できます。
<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; }
}