【C#】データテーブルの構造体を複製する【DataTable】

2020年2月18日

既にあるデータテーブルを複製する

「dt.Clone()」を使用することで、

既にあるデータテーブルの複製ができます。

ここでの複製は、スキーマ、制約を含めた構造体の複製であり、データは複製されません。


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

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

    // 列追加
    dt.Columns.Add("HINMEI");
    dt.Columns.Add("SURYO");
    dt.Columns.Add("TANKA");
    dt.Columns.Add("KINGAKU");
    // 行追加
    dt.Rows.Add("りんご", "3", "50", "150");
    dt.Rows.Add("ぶどう", "1", "200", "200");
    dt.Rows.Add("みかん", "10", "30", "300");

    /* 
      今回の内容はここから
    */ 
    // 既にあるデータテーブルを複製する
    DataTable dtNew = dt.Clone();


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

今回は、まとめる必要がありませんでしたが、メソッド形式のソースコードも記載したいので載せます。

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


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

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

            // 列追加
            dt.Columns.Add("HINMEI");
            dt.Columns.Add("SURYO");
            dt.Columns.Add("TANKA");
            dt.Columns.Add("KINGAKU");
            // 行追加
            dt.Rows.Add("りんご", "3", "50", "150");
            dt.Rows.Add("ぶどう", "1", "200", "200");
            dt.Rows.Add("みかん", "10", "30", "300");

            /* 
              今回の内容はここから
            */ 
            // 既にあるデータテーブルを複製する
            DataTable dtNew = dt.Clone();
        }


まとめ

もう1つ同じ構成でデータテーブルを用意したい時には役立ちますね。

データテーブルのコピーとは違い、構造体だけを複製してくれるのも便利な機能に感じます。


Microsoft 公式ページ

DataTable.Clone メソッド
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.datatable.clone?view=netframework-4.0