VB.NET DataTable 重複削除 DataView

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

今回は、DataTableの重複削除について、まとめていきたいと思います。

DataTableを使用していると、重複行を削除したい時がよくありますので、備忘録として記載しておきます。

DataTable 重複削除 DataViewを使用する

DataView.ToTableの使い方

DataTableの重複を削除するには、DataViewを使用すると簡単にできます。さっそく使い方を見てみましょう。

Dim dtView As DataView
dtView = New DataView(datatable)
dt = dtView.ToTable(True,項目名)

DataView.ToTableを使うことで、重複削除ができます。

1つ目の引数で、重複削除の指定ができます。Trueの時は、重複削除をする。Falseの時は、重複削除をしない。

2つ目の引数は、DataTableの項目名を指定することで、指定した項目のみを抽出します。

 

サンプル

まずは、データテーブルを作成しましょう。

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

    If i = 9 Then
        dtRow("height") = (100 + (i - 1) * 10).ToString
    Else
        dtRow("height") = (100 + i * 10).ToString
    End If

    '行追加
    dt.Rows.Add(dtRow)
Next

こんな感じのデータテーブルがあるとします。最後の2つのデータが重複していますね。それでは、削除してみましょう、

Dim dtView As DataView
dtView = New DataView(dt)
dt = dtView.ToTable(True)

結果

重複が削除されました。

重複削除 項目指定

次は、項目を指定して重複項目を削除してみましょう。

Dim dtView As DataView
dtView = New DataView(dt)
dt = dtView.ToTable(True, "name")

結果

name指定しているので、1行のみ取得できました。

重複削除 複数項目

最後に複数項目を指定して、重複を削除したい時のやり方ですが、項目を配列に格納して、引数に当てはめるだけです。

とても簡単です。

Dim dtView As DataView
dtView = New DataView(dt)
dt = dtView.ToTable(True, {"name", "old"})

結果

まとめ

Dim dtView As DataView

dtView = New DataView(datatable)
dt = dtView.ToTable(True,項目名)

もしくは

datatable = datatable.DefaultView.ToTable(True, 項目名)

この書き方を覚えておくととても便利です。

 

VB.NETの記事一覧

関連記事

 

 

おすすめの記事