Eseguire un "group by" su un datatable con sommatoria

by enrico 29. September 2008 02:15

Ho ormai perso diverse ore per trovare un sistema per eseguire un "group by" o simili su un datatable questo perché ho estratto una query dal database con diverse righe doppie e non posso eseguire un raggruppamento direttamente sul database (ad esempio ho fatto delle union nello script SQL).

Attraverso questo codice riesco a creare un datatable raggruppando in un'unica riga le righe che hanno più righe su un campo A sommando i valori numerici B. dt è il datatable di partenza con ad esempio i dati ottenuti con una query sul database.

   1:  Dim dtAgg As DataTable = dt.Clone
   2:  dtAgg.PrimaryKey = New DataColumn() {dtAgg.Columns("A")}
   3:   
   4:  For I As Integer = 0 To dt.Rows.Count - 1
   5:     Dim dr As DataRow = dtAgg.Rows.Find(dt.Rows(I).Item("A"))
   6:     If IsNothing(dr) Then
   7:        dr = dtAgg.NewRow()
   8:        dr.Item("A") = dt.Rows(I).Item("A")
   9:        dr.Item("B") = dt.Rows(I).Item("B")
  10:        dtAgg.Rows.Add(dr)
  11:     Else
  12:        dr.Item("B") += dt.Rows(I).Item("B")
  13:     End If
  14:  Next

Ovviamente la personalizzazione del codice ti permetterà di risolvere problemi più complessi.

Currently rated 5.0 by 2 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , , ,

vb.net | Tricks & Tips | Work around

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading



Powered by Esia Software 1.4.0.0

Informazioni sull'autore

Sono un cittadini di Trieste, ho 33 anni e faccio lo sviluppatore nella mia azienda che si chiama Esia Software.

Commenti recenti

Comment RSS

Post recenti

Calendar

<<  May 2012  >>
MoTuWeThFrSaSu
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

View posts in large calendar

Info legali

Le opinioni espresse in questo blog sono strettamente personali e ogni persona è responsabile dei commenti che inserisce.

RecentComments

Comment RSS