2009-06-16 4 views
1

J'essaie d'interroger un DataTable pour calculer la somme de 2 colonnes et regrouper le résultat par le reste des champs. La chose est que je peux seulement obtenir les valeurs de colonne agrégées et je ne peux pas obtenir les valeurs non agrégées.Problème d'agrégation DataTable

Voici le code que je utilise:

var balances = from b in dtAccounts.AsEnumerable() 
       group b by b.Field<decimal>("ACCOUNT_ID") into g 
       select new 
         { 
          credit = g.Sum(b => b.Field<decimal>("CREDIT")), 
          debit = g.Sum(b => b.Field<decimal>("DEBIT")) 
         } 

Quelqu'un peut-il donner un indice sur son morceau de code?

Merci à l'avance

Répondre

2

La plage variable g a une propriété Key qui représente la clé que vous avez regroupés par. Dans votre cas, c'est b.Field<decimal>("ACCOUNT_ID"). Donc, si vous voulez avoir le account_id avec les résultats, vous avez besoin de cette requête:

var balances = from b in dtAccounts.AsEnumerable() 
       group b by b.Field<decimal>("ACCOUNT_ID") into g 
       select new 
         { 
          accountId = g.Key, 
          credit = g.Sum(b => b.Field<decimal>("CREDIT")), 
          debit = g.Sum(b => b.Field<decimal>("DEBIT")) 
         }