C# Datatable 指定した列の削除 Remove RemoveAt

今回は、C#を利用したDatatableの列の削除方法を紹介していきます。

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

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

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

列の削除 Remove RemoveAt

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

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

datatable.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を利用してやってみましょう。

datable.Columns.RemoveAt(1);

解説

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

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

 

注意点

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

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

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

datatable.Columns.RemoveAt(1);
datatable.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 void frmDtColumnsDelete_Load(object sender, EventArgs e)
{
    //データテーブル作成
    DataTable dt = new DataTable();

    //列作成
    dt.Columns.Add("name");
    dt.Columns.Add("old");
    dt.Columns.Add("height");

    //行追加
    DataRow dtRow;
    dtRow = dt.NewRow();
    dtRow["name"] = "ひろにも";
    dtRow["old"] = "10";
    dtRow["height"] = 100;
    dt.Rows.Add(dtRow);

    //列削除
    //dt.Columns.Remove("old");

    //列削除
    dt.Columns.RemoveAt(2);
    dt.Columns.RemoveAt(1);

}

 

まとめ

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

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

datatable.Columns.Remove("列名");
datatable.Columns.RemoveAt(列数);

 

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

 

C#の記事一覧

おすすめの記事