Lavorando con i dati può essere utile calcolare totali globali o parziali di una colonna (quantità vendute, importi e quant'altro), oppure ricavare il valore massimo tra tutti i valori di una colonna. In questi casi il metodo Compute della classe System.Data.DataTable ci può essere molto utile:
Esempio:
In questo esempio abbiamo una DataTable contenente i dati della tabella "sales" nel database pubs di Sql Server.
1) Calcoliamo il totale delle quantità di tutte le vendite
/* C# */
int tot = Convert.ToInt32(dtSales.Compute("SUM(qty)", string.Empty));
' VB.NET
Dim tot As Integer = Convert.ToInt32(dtSales.Compute("SUM(qty)", String.Empty))
Il casting è dovuto in quanto il metodo ritorna un generico System.Object: in questo caso abbiamo sommato tutte le righe della tabella, infatti il secondo parametro che si riferisce all'espressione filtro è stato lasciato vuoto, vediamo ora ancora un caso utilizzando un filtro.
2) Calcoliamo la somma delle quantità vendute soltanto per una singola ordinazione presente in tabella.
/* C# */
int tot = Convert.ToInt32(dtSales.Compute("SUM(qty)", "ord_num = 'P3087a'"));
' VB.NET
Dim tot As Integer = Convert.ToInt32(dtSales.Compute("SUM(qty)", "ord_num = 'P3087a'"))
Naturalmente questo metodo non si utilizza solo con la funzione Sum(), ma può essere utilizzato con altre funzioni molto utili quali ad esempio Min(), Max(), Avg().