Подтвердить что ты не робот

Как объединить данные в 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?

4b9b3361

Ответ 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; }
}