zukucode
主にWEB関連の情報を技術メモとして発信しています。

VB.NET DataTableをSelect検索をして絞り込みや存在チェックを行う

VB.NETDataTableSelectして絞り込みや存在チェックを行う方法を紹介します。

以下のDataTableがあるとします。

employee
idfirst_namelast_namedepartment_idheight
1一郎山田1170
2次郎佐藤2175
3三郎田中1185
4四郎鈴木2155

身長が175cmの社員が存在するのかをチェックをしたい場合は以下のように判定します。

Dim dt As DataTable 'employee
Dim rows As DataRow()

rows = dt.Select("height = 175")

If rows.Length <> 0 Then
  'データあり
End If

解説

DataTable.Select(条件)で条件に該当する行をDataRowの配列で返却します。

返却されたDataRow配列の長さが0以上であれば条件に該当するレコードが存在するということになります。

表示順を指定する

employeeテーブルでdepartment_id = 1のレコードを抽出するとします。

(カラムが文字列型の場合はシングルクォーテーションで囲うのを忘れないようにします。)

Dim dt As DataTable 'employee
Dim rows As DataRow()

rows = dt.Select("department_id = '1'")

2件が取得対象となりますが、DataRowの配列にセットされる順番はどのようにセットされるかはわかりません。

取得結果(データ順が定まらない)
idfirst_namelast_namedepartment_idheight
1一郎山田1170
3三郎田中1185
idfirst_namelast_namedepartment_idheight
3三郎田中1185
1一郎山田1170

Select(条件, 表示順)のように、第2引数に表示順を指定します。

以下のようにSQLと同じような要領で指定します。

'身長(昇順)、id(昇順)
rows = dt.Select("department_id = '1'", "height, id")

'身長(降順)
rows = dt.Select("department_id = '1'", "height DESC")

関連記事