Как объединить данные в ASP.NET MVC View?
В инструментальных средствах отчетов, таких как 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, возможно, используя простую фразу linq или метод расширения linq с помощью foreach или вложенного foreach?
Ответы
Ответ 1
Если ваше представление строго типизировано, вы можете использовать метод расширения 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; }
}