【C#】データテーブルの列の存在チェックをする【DataTable】

2020年2月6日

列が存在するかチェックする

今回の存在チェック処理は、dt.Columns に対して行います。

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

文字列で列名を指定する事で列が存在してるかチェックする事が可能となります。

ここでは、列名が HINMEI(品名) の列を存在チェックしていきます。


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

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

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

    /* 
      今回の内容はここから
    */ 
    // 列が存在するかチェックする
    if (dt.Columns.Contains("HINMEI"))
    {
        Console.WriteLine("該当する列は存在します");
    }
    else
    {
        Console.WriteLine("該当する列は存在しません");
    }


列を追加する前に存在チェックをする

データテーブルに HINMEI(品名) が既に列追加されている場合に

同じ列名で列追加しようとすると、例外エラーが発生します。

その回避方法として、存在チェックは使用される事があります。


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

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

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

    /* 
      今回の内容はここから
    */ 
    // 列を追加する前に存在チェックをする
    if (dt.Columns.Contains("KINGAKU"))
    {
        Console.WriteLine("既に存在しているため、列追加しません。");
    }
    else
    {
        dt.Columns.Add("KINGAKU");
        Console.WriteLine("KINGAKU(金額)を追加しました。");
    }


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

上記で記載した2点のソースコードをまとめました。

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


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

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

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

            /* 
              今回の内容はここから
            */ 
            // 列を追加する前に存在チェックをする
            if (dt.Columns.Contains("KINGAKU"))
            {
                Console.WriteLine("既に存在しているため、列追加しません。");
            }
            else
            {
                dt.Columns.Add("KINGAKU");
                Console.WriteLine("KINGAKU(金額)を追加しました。");
            }
            // 列が存在するかチェックする
            if (dt.Columns.Contains("HINMEI"))
            {
                Console.WriteLine("該当する列は存在します");
            }
            else
            {
                Console.WriteLine("該当する列は存在しません");
            }
        }


まとめ

動的にデータテーブルの列構成が変化する場合には、この Contains を使用して、

例外エラーを回避するのが得策かと思います。

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


Microsoft 公式ページ

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