2013-06-15 2 views
0

Je passe mon modèle à ma vue. Sur cette vue, j'affiche une table et essaie de la remplir avec une liste d'informations de la base de données.Comment grouper un modèle fortement typé

J'utilise asp.net-mvc, Entity Framework, rasoir, C# et LINQ

Cependant je en ai besoin groupé par une certaine colonne kpiID.

Voici toutes les colonnes du tableau.

kpiHistoryID 
kpiID 
startAmount 
completedamount 
endAmount 
completeBy 
comments 

Les liens kpiID arrière du tableau de KPI et est où je peux saisir le nom réel de l'indicateur de performance clé.

Comment exactement regrouper les données et peut-il être fait dans la ligne @foreach ci-dessous?

<tbody> 
    @foreach (var item in @Model.IPACS_Department.IPACS_Functions.SelectMany(m => m.IPACS_Processes).SelectMany(m => m.IPACS_Procedures).SelectMany(m => m.IPACS_KPIS).SelectMany(m => m.IPACS_kpiHistory)) 
    { 
     <tr class="gradeX"> 
      <td> 
       @item.IPACS_KPIS.name 
      </td> 
      <td> 
       @item.startAmount 
      </td> 
      <td> 
       @item.completedAmount 
      </td> 
      <td> 
       @item.endAmount 
      </td> 
     </tr> 
    } 
</tbody> 
+0

Vous devez faire les choses 'SelectMany' de tout groupement dans le contrôleur, la vue est juste boucle si' var élément dans Model.TheList' –

+0

@ColmPrunty Vous avez raison. Cependant je ne suis pas super expérimenté. Sur cette page, j'ai besoin d'accéder à IPACS_Department, IPACS_Function, IPACS_Process, IPACS_Procedure, IPACS_KPIS et IPACS_kpiHistory. J'ai supposé que je pourrais les placer tous dans le contrôleur, mais je ne sais toujours pas comment les grouper correctement. –

+0

Voilà à quoi servent les modèles de vue. Utilise les. * Toujours * les utiliser. http://msdn.microsoft.com/en-us/vs2010trainingcourse_aspnetmvc3fundamentals_topic7.aspx –

Répondre

0

façon je pouvais comprendre comment le faire utilisait somme. Je n'arrivais pas à le faire travailler avec le groupe.

<tbody> 
    @foreach (var item in @Model.IPACS_Department.IPACS_Functions.SelectMany(m => m.IPACS_Processes).SelectMany(m => m.IPACS_Procedures).SelectMany(m => m.IPACS_KPIS)) 
    { 
     <tr class="gradeX"> 
      <td> 
       @item.name 
      </td> 
      <td> 
       @item.IPACS_kpiHistory.Select(m => m.startAmount).Sum() 
      </td> 
      <td> 
       @item.IPACS_kpiHistory.Select(m => m.completedAmount).Sum() 
      </td> 
      <td> 
       @item.IPACS_kpiHistory.Select(m => m.endAmount).Sum() 
      </td> 
     </tr> 
    } 
</tbody> 
1

Ce:

@Model.IPACS_Department.IPACS_Functions.SelectMany(m => m.IPACS_Processes) 
.SelectMany(m => m.IPACS_Procedures).SelectMany(m => m.IPACS_KPIS) 
.SelectMany(m => m.IPACS_kpiHistory) 

donne une liste des kpiHistories dénormalisé, oui? N'êtes-vous pas donner la réponse que vous voulez si vous

thatList.GroupBy(x => x.kpiID) 
+0

Je n'ai pas pu obtenir thatList.GroupBy pour afficher même une option pour GroupBy. mais j'étais capable de deviner un moyen de faire ce que j'avais besoin de faire. Réponse affichée, je ne sais pas pourquoi j'ai eu autant de problèmes avec GroupBy. –

+0

Étrange que GroupBy n'est pas apparu comme une option, mais je suppose que si vous avez compris ce que vous voulez faire, c'est suffisant. Si jamais vous devenez assez curieux pour comprendre ce qui se passait avec GroupBy, postez un commentaire pour moi. –

Questions connexes