Logo UGIdotNET

Utilizzare il metodo Compute della classe DataTable

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().

Autore: Massimo Prota
Data: 16 marzo 2003
Ultimo aggiornamento: 23 luglio 2004
Categorie: 

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185