VB.NET Datatable Select 抽出 並べ替え

こんにちは、ひろにもです。

今回は、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の値を抽出できますね。

ぜひ使ってみましょう。

 

VB.NETの記事一覧

おすすめの記事