DataTableのデータから
指定された条件に合うデータを取得する方法です。
DataTableから条件に合ったデータを取得する
'テーブル作成
Dim dt As New DataTable
'列項目を作成
dt.Columns.Add("No", Type.GetType("System.Int32"))
dt.Columns.Add("商品名")
dt.Columns.Add("製造元")
dt.Columns.Add("価格", Type.GetType("System.Int32"))
'行データの登録
'1行目
Dim row As DataRow
row = dt.NewRow
row("No") = 50
row("商品名") = "商品A"
row("製造元") = "製造元A"
row("価格") = 1000
dt.Rows.Add(row)
'2行目
row = dt.NewRow
row("No") = 100
row("商品名") = "商品B"
row("製造元") = "製造元B"
row("価格") = 1000
dt.Rows.Add(row)
'3行目
row = dt.NewRow
row("No") = 30
row("商品名") = "商品C"
row("製造元") = "製造元B"
row("価格") = 10000
dt.Rows.Add(row)
'データの確定
dt.AcceptChanges()
'条件に合うデータの取得
Dim ret As DataRow()
ret = dt.Select("製造元 = '製造元B'")
'データテーブルの内容を表示
Console.WriteLine("No" & " " & "商品名" & " " & "製造元" & " " & "価格")
For Each d As DataRow In ret
Console.WriteLine(d("No") &
" " & d("商品名") &
" " & d("製造元") &
" " & d("価格"))
Next
No 商品名 製造元 価格
100 商品B 製造元B 1000
30 商品C 製造元B 10000
DataTableから条件に合ったデータを取り出したい場合には、
Selectメソッドを使います。
引数に条件を書き、文字列で指定します。
この中で文字列を扱う場合には’シングルクォーテーションを使います。
条件は、
この例の場合だと、製造元が”製造元B”のデータを取得します。
取得されたデータは複数件になる可能性があるので、
DataRow配列で受け取ります。
並べ替えたい時は
表示されたデータを見てみると、Noの順で並んでいません。
並び替えたい場合は、
Selectメソッドの第2引数に、並び替え基準となるキーを指定します。
ret = dt.Select("製造元 = '製造元B'", "No") '昇順
ret = dt.Select("製造元 = '製造元B'", "No desc") '降順
この場合は、Noを基準に昇順か降順か指定できます。
何も指定しなければ、昇順、descと書けば降順になります。
注意する点は、DataTableの列設定時に、
列のデータ型を数値型に設定しておかなければならない。と言う事です。
dt.Columns.Add("No", Type.GetType("System.Int32")) 'データ型を数値型に指定
dt.Columns.Add("No") '何も指定しないとString型になってしまう
列のデータ型がString型になっていると、
昇順、降順の並べ替えがうまく機能しませんので、注意が必要です。
スポンサーリンク
複数の条件を設定する
Selectメソッドで、複数の条件も指定できます。
ret = dt.Select("製造元='製造元B' and 価格=1000")
No 商品名 製造元 価格
100 商品B 製造元B 1000
この例の場合は、製造元が製造元Bで、
さらに、価格が1000のデータが抽出されます。
以上、DataTableからデータを取得する方法でした。