【C#】データテーブルの列を削除する【DataTable】

2020年2月5日

列名を指定して削除する(文字列)

「dt.Columns.Remove(“")」のダブルコーテーション(“")中に

文字列で列名を指定する事で列の削除が可能となります。

ここでは、列名が HINMEI(品名) の列を削除していきます。


    // データテーブルの初期化
    DataTable dt = new DataTable();

    // データテーブルの名前を指定
    dt.TableName = "FRUIT";

    // 列追加
    dt.Columns.Add("HINMEI");
    dt.Columns.Add("SURYO");
    dt.Columns.Add("TANKA");
    dt.Columns.Add("KINGAKU");

    /* 
      今回の内容はここから
    */ 
    // 列名を指定して削除する(文字列)
    dt.Columns.Remove("HINMEI");



列を指定して削除する(DataColumn)

「dt.Columns.Remove(DataColumn)」を使用します。

まずは削除したい列項目を取得します。

取得したDataColumnをdt.Columns.Remove(DataColumn)と指定する事で

列の削除が可能となります。

ここでは、TANKA(単価)を削除していきます。


    // データテーブルの初期化
    DataTable dt = new DataTable();

    // データテーブルの名前を指定
    dt.TableName = "FRUIT";

    // 列追加
    dt.Columns.Add("HINMEI");
    dt.Columns.Add("SURYO");
    dt.Columns.Add("TANKA");
    dt.Columns.Add("KINGAKU");

    /* 
      今回の内容はここから
    */ 
    // TANKAのDataColumnを取得
    DataColumn dc = dt.Columns["TANKA"];

    // 列を指定して削除する(DataColumn)
    dt.Columns.Remove(dc);



インデックスを指定して削除する(Index)

「dt.Columns.RemoveAt(index)」を使用します。

削除したい列のインデックスを指定する事で、列が削除されます。

インデックスが指定できるのはRemoveAtのみです。Removeではできません。

ここでは、(SURYO)数量を削除しています。※数量のインデックスは 1 です。


    // データテーブルの初期化
    DataTable dt = new DataTable();

    // データテーブルの名前を指定
    dt.TableName = "FRUIT";

    // 列追加
    dt.Columns.Add("HINMEI");
    dt.Columns.Add("SURYO");
    dt.Columns.Add("TANKA");
    dt.Columns.Add("KINGAKU");

    /* 
      今回の内容はここから
    */ 
    // インデックスを指定して削除する(Index)
    dt.Columns.RemoveAt(1);



コピペですぐ試せるソースコード

3種類の列削除方法を1つのソースにまとめました。

まとめた関係上、最後の列の削除はKINGAKU(金額)になります。

ソースコードをコピペするとそれぞれの動作が確認できると思います。


        private void DataTable_Columns_Remove()
        {
            DataTable dt = new DataTable();

            // データテーブルの名前を指定
            dt.TableName = "FRUIT";

            // 列追加
            dt.Columns.Add("HINMEI");
            dt.Columns.Add("SURYO");
            dt.Columns.Add("TANKA");
            dt.Columns.Add("KINGAKU");

            /* 
              今回の内容はここから
            */ 
            // 列名を指定して削除する(文字列)
            dt.Columns.Remove("HINMEI");

            // TANKAのDataColumnを取得
            DataColumn dc = dt.Columns["TANKA"];
            // 列を指定して削除する方法(DataColumn)
            dt.Columns.Remove(dc);

            // インデックスを指定して削除する(Index)
            dt.Columns.RemoveAt(1); // 削除されたのはKINGAKUとなる。
        }


まとめ

今回は複数の方法で、列を削除するソースコードを記載しました。

説明した実装方法が正解ということはありません。

用途にあったやり方、自分のやりやすい実装を採用していきましょう。

以上です。


Microsoft 公式ページ

DataColumnCollection クラス
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.datacolumncollection?view=netframework-4.0


DataColumnCollection.Remove メソッド
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.datacolumncollection.remove?view=netframework-4.0


DataColumnCollection.RemoveAt(Int32) メソッド
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.datacolumncollection.removeat?view=netframework-4.0