2012-10-27 5 views
0

i ont la vb.net suivante requête LINQGroupe LINQ par et Somme syntaxe

Dim q = From row In dx.AsEnumerable 
       Group row By G = New With {.Cat = row.Field(Of Integer)("catalogid")}.Cat, 
           New With {.Backorder = row.Field(Of Integer)("backorder")}.Backorder Into pg = Group 
       Select New With 
         { 
          .Cat = pg.Cat, 
          .Backorder = pg.Sum(Function(x) x.Backorder) 
         } 

j'ai ce dx appelé datatable

catalogid  backorder 
1    5 
1    10 
2    1 
2    5 

je veux Sumbackorder colonne où catalogid est la même façon le résultat est le suivant

catalogid  backorder 
1    15 
2    6 

dans le Selec t nouveau avec une partie, quel est le problème?

Répondre

1

Essayez de suivre ...

var result = dx.AsEnumerable() 
       .GroupBy(row => row.Field<int>("catalogid")) 
       .Select(group => group.Sum(item => item.Field<int>  ("backorder")).CopyToDataTable(); 

ou

var result= from s in dx.AsEnumerable() 
      group s by s.Field<int>("catalogid") into grp 
      select new { 
      CatalogId= grp.Key, 
      Back Order = grp.Sum(r => r.Field<int>("backorder")) 
      }; 

DataTable datatbl = result.CopyToDataTable(); 
+0

tout indice sur comment puis-je mettre le résultat dans un datatable ou l'enregistrer sur datatable dx? – user1570048

+0

Utilisez CopyToDataTable(), voir ma réponse éditée –

+0

sauf que copyToDataTable ne fonctionnera pas avec Enumerable – user1570048