VB.NETのDataTableをSelectで行を取得するサンプルです。
目次
サンプル | DataTableクラス |
一致するデータを取得する | |
一致しないデータを取得する | |
データ取得後にソートする | |
参考 | Selectする対象のDataTable |
DataTableクラス
- メモリ内のテーブルのように使用できます。
- 以下は、MicrosoftのDataTableクラスのリンクです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.datatable?view=netcore-3.1
一致するデータを取得する
一致するデータを取得するサンプルです。
Dim name1 = "田中"
' 条件に一致する(=)
Dim d1 As DataRow()
d1 = employee.Select("name = '" + name1 + "'")
For Each d As DataRow In d1
Console.WriteLine(d("name").ToString) '田中
Next
5行目の「employee」はデータテーブルです。データテーブルの項目に「name」があるとします。
(このページの下にデータテーブルのイメージがあります)
4行目の変数d1は、DataRow型で複数の値を保持できます。
5行目のSelectの引数の中の=で一致するデータを取得します。
一致しないデータを取得する
一致しないデータを取得するサンプルです。
Dim name1 = "田中"
' 条件に一致しない(<>)
Dim d2 As DataRow()
d2 = employee.Select("name <> '" + name1 + "'")
For Each d As DataRow In d2
Console.WriteLine(d("name").ToString) '佐藤 鈴木
Next
5行目の「employee」はデータテーブルです。データテーブルの項目に「name」があるとします。
(このページの下にデータテーブルのイメージがあります)
4行目の変数d2は、DataRow型で複数の値を保持できます。
5行目のSelectの引数の中の<>で一致しないデータを取得します。
データ取得後にソートする
データ取得後にソートするサンプルです。
Dim d2 As DataRow()
d2 = employee.Select("id >= '2'", "name")
For Each d As DataRow In d2
Console.WriteLine(d("name").ToString) '佐藤 田中
Next
Dim d3 As DataRow()
d3 = employee.Select("id >= '2'", "name desc")
For Each d As DataRow In d3
Console.WriteLine(d("name").ToString) '田中 佐藤
Next
3,10行目の「employee」はデータテーブルです。データテーブルの項目に「id」と「name」があるとします。(このページの下にデータテーブルのイメージがあります)
3行目は、2つめの引数にソートする項目を指定しています。昇順になります。
10行目も2つめの引数にソートする項目を指定しています。descがあるので降順になります。
Selectする対象のDataTable
以下は、Selectする対象のDataTableです。テーブルを作成し3行追加しています。
Module Module1
Sub Main()
'テーブル作成
Dim employee As New DataTable("社員テーブル")
employee.Columns.Add("id") '項目を追加
employee.Columns.Add("name")
employee.Columns.Add("romaji")
'1行目を作成
Dim row As DataRow
row = employee.NewRow
row("id") = "1" '値を追加
row("name") = "鈴木"
row("romaji") = "suzuki"
employee.Rows.Add(row) '1行目をテーブルに追加
'2行目を作成
row = employee.NewRow
row("id") = "2"
row("name") = "田中"
row("romaji") = "tanaka"
employee.Rows.Add(row) '2行目をテーブルに追加
'3行目を作成
row = employee.NewRow
row("id") = "3"
row("name") = "佐藤"
row("romaji") = "sato"
employee.Rows.Add(row) '3行目をテーブルに追加
employee.AcceptChanges()
End Sub
End Module
DataTableを作成し、3行データを追加しています。
関連の記事