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.