
こんにちは、ひろにもです。
今回は、Datatableに格納されているデータをさらに絞り込んで、取得する方法を紹介します。
必須の技術ではないですが、こんなのがあるのを知っていると便利だと思います。
DatatableにはSelectメソッドがあり、このメソッドを使用することでDatatableから値を取得できます。
VB.NET Datatable Select抽出 並べ替え
Selectの使い方
DatatableのSelectの使い方
datatable.Select("抽出条件","表示順")
こんな感じのデータテーブルがあるとします。oldが10のデータのみ抽出しましょう。
Dim dr As DataRow() = datatable.Select("old = 10")
データを抽出する例を記載してみました
'------------------------
' データテーブル作成
'------------------------
Dim dt As New DataTable("people")
dt.Columns.Add("name")
dt.Columns.Add("old")
dt.Columns.Add("height")
'DataRow宣言
Dim dtRow As DataRow
For i As Integer = 0 To 9
'1行目
dtRow = dt.NewRow
dtRow("name") = "ひろにも"
If i < 5 Then
dtRow("old") = "10"
Else
dtRow("old") = "20"
End If
dtRow("height") = (100 + i * 10).ToString
'行追加
dt.Rows.Add(dtRow)
Next
'-----------------------------------
' ★データテーブル Selectメソッド
'-----------------------------------
Dim dr As DataRow() = dt.Select("old = 10")
For rowIndex As Integer = 0 To dr.Count - 1
For colIndex As Integer = 0 To dr(rowIndex).ItemArray.Count - 1
Console.Write(dr(rowIndex)(colIndex))
Next
Console.WriteLine()
Next
実行結果
ひろにも10100
ひろにも10110
ひろにも10120
ひろにも10130
ひろにも10140
表示順
次は、Datatableの表示順を変更してみましょう。
先ほどと同じデータでheightの降順(大きい順)に表示してみます。DESCを末尾につけてください。
heightの小さい順の時は、DESCを付けないだけです。
Dim dr As DataRow() = dt.Select("", "height DESC")
実行結果
ひろにも20190
ひろにも20180
ひろにも20170
ひろにも20160
ひろにも20150
ひろにも10140
ひろにも10130
ひろにも10120
ひろにも10110
ひろにも10100
複数条件の場合
条件がold = 10 height = 110 のデータを抽出してみましょう。表示順をname height(降順)に並べ替えましょう。
Dim dr As DataRow() = dt.Select("old=10 and height=110", "name,height DESC")
実行結果
ひろにも10110
まとめ
datatable.Select("抽出条件","表示順")
この書き方さえ使えれば、自由にDatatableの値を抽出できますね。
ぜひ使ってみましょう。