VB.NET DataTableの指定した列の値を集計する
VB.NET
で、DataTable
の指定した列の値を集計する方法を紹介します。
DataTable
にはComputed
というメソッドが用意されていますが、ここではラムダ式(無名関数)を利用した方法を紹介します。
ラムダ式の基本的な使い方についてはVB.NET ラムダ式(無名関数)の基本的な使い方で紹介します。
例えば以下のデータテーブルがあるとします。
ID | NAME | PRICE |
---|---|---|
1 | りんご | 150 |
2 | ばなな | 100 |
3 | みかん | 30 |
4 | いちご | 200 |
PRICE
列を集計して合計値を取得したい場合は以下のようにします。
Dim total As Integer = dt.Rows.Cast(Of DataRow) _
.Sum(Function(row) CInt(row("PRICE")))
ラムダ式を使えばもっと複雑な集計が行なえます。
例えばID
が3
の値を集計しないようにしたい場合は以下のようにします。
Where
でID
が3
以外の要素に絞り込んでいます。
Dim total As Integer = dt.Rows.Cast(Of DataRow) _
.Where(Function(row) row("ID").ToString <> "3") _
.Sum(Function(row) CInt(row("PRICE")))