【C#】データテーブルの行を別のデータテーブルに行インポートする【DataTable】

別データテーブルに行インポートする

「dt.ImportRow(DataRow)」を使用します。

プロパティ設定、元の値、および現在の値を保持したまま、

コピー先のデータテーブルの末尾にインポートします。

コピー元とコピー先で制約が違う場合は、行はインポートされません。


    // データテーブルの初期化
    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 dtImport = dt.Clone();
    dtImport.ImportRow(dt.Rows[1]);


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

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

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


        private void DataTable_ImportRow()
        {
            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 dtImport = dt.Clone();
            dtImport.ImportRow(dt.Rows[1]);
        }


まとめ

「dt.Rows.Add()」で例外エラーになったときに

「dt.ImportRow()」でエラーも回避できるし、行も正しく追加された。

と、軽い感じプログラミングしていた時期がありました。

正しく使い分けることが大事に思います。


Microsoft 公式ページ

DataTable.ImportRow(DataRow) メソッド
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.datatable.importrow?view=netframework-4.0