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")))