VB.NET Datatable 指定した列の削除 remove

VB.NETを利用した、Datatableの列の削除方法を紹介していきます。

不要な列がある場合は、削除していきましょう。

Datatableの使い方や、行の削除方法を知りたい人は、こちらを参考にしてみてください。

それではさっそくやっていきましょう。

列の削除

Datatableの列を削除するには、Removeもしくは、RemoveAtを利用します。

今回は、列を削除したいので、Columsに対してRemoveしていきましょう。

datable.Columns.Remove("列名")

もしくは

datatable.Columns.RemoveAt(行インデックス)

Reomveは列名称、ReomveAtは行の位置で削除することが可能です。

使用例

Remove

実際の例を見ていきましょう。

列(name、old、height)の3列があるDatatableを準備しました。

このDatatableから、Removeを使って「old」を削除してみましょう。

datatable.Columns.Remove("old")

結果

「old」を削除することができましたね!

このように、Removeの場合は、列名を指定して削除することができます。

 

RemoveAt

続いて、RemoveAtの使用方法を紹介していきます。

先ほどと同じ内容をRemoveAtを利用してやってみましょう。

datatable.Columns.RemoveAt(1)

解説

RemoveAtは0が1列目になるので、「old」は2列目なので、1を指定しています。

0から始まるので注意してください。

 

注意点

RemoveAtを利用するときの注意点を紹介します。

先ほどのDatatableから「old、height」を削除してみましょう。

2列目と3列をを削除していきます。

dt.Columns.RemoveAt(1)
dt.Columns.RemoveAt(2)

この場合、エラーが発生してしまいます。

これは、列を削除した後すぐインデックスが振りなおされるので、発生してしまいます。

「0:name 1:old 2:height」この状態からoldが削除されます。

「0:name 1:height」このようになるので、RemoveAt(2)で削除しようとすると「列2がありません」とエラーが出てしまいます。

なので、削除するときはインデックスが大きい順に削除するとエラーなく対応できます。

datatable.Columns.RemoveAt(2)
datatable.Columns.RemoveAt(1)

複数列を削除するときは、注意してくださいね。

 

サンプルソース

最後にサンプルソースを載せておきます。

Private Sub frmDatatable_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    'データテーブル作成
    Dim dt As New DataTable
    dt.Columns.Add("name")
    dt.Columns.Add("old")
    dt.Columns.Add("height")

    Dim dtRow As DataRow

    For i As Integer = 0 To 9

        dtRow = dt.NewRow()
        dtRow("name") = "ひろにも"

        If i < 5 Then
            dtRow("old") = "10"
        Else
            dtRow("old") = "20"
        End If
        dtRow("height") = (100 + 10 * i)
        dt.Rows.Add(dtRow)

    Next

    '列削除
    'dt.Columns.Remove("old")

    '列削除
    dt.Columns.RemoveAt(2)
    dt.Columns.RemoveAt(1)

End Sub

 

 

まとめ

今回は、Datatableの列を削除する方法を紹介しました。

RemoveとRemoveAtで列名もしくは、列数を指定してください。

datatable.Columns.Remove("列名")
datatable.Columns.RemoveAt("列インデックス")

また、注意点として、RemoveAtを利用するときは、インデックスが変わるので注意してください。

 

C#の記事一覧

おすすめの記事