Come faccio a raggruppare i dati in una vista MVC ASP.NET?

Negli strumenti di reporting come Crystal Reports, ci sono modi per prendere dati denormalizzati e raggrupparli per una particolare colonna nei dati, creando intestazioni di riga per ogni object unico nella colonna specificata.

Se ho questo:

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

Il software di segnalazione lo raggrupperà in questo modo:

 Category1 Data1 Data2 Date3 Category2 Data4 Data5 Data6 

C’è un modo per farlo in una vista ASP.NET MVC, magari usando una semplice frase di linq o un metodo di estensione linq con un foreach o un foreach annidato?

    Se la tua vista è fortemente tipizzata, puoi utilizzare il metodo di estensione LINQ GroupBy con foreach nidificato:

     
      <% foreach (var group in Model.GroupBy(item => item.Category)) { %>
    • <%= Html.Encode(group.Key) %>
        <% foreach (var item in group) { %>
      • <%= Html.Encode(item.Data) %>
      • <% } %>
    • <% } %>

    Ciò fornirà un output molto simile ai tuoi elenchi formattati nella domanda originale. Presume che il tuo modello assomigli a qualcosa:

     public class ViewModel { public string Category { get; set; } public string Data { get; set; } }