C# DataTableをコピーするサンプル

C#のDataTableをコピーするサンプルです。

目次

サンプル DataTableクラス
  テーブルの構造と値をコピーする(copy)
  テーブル構造のみコピーする(clone)

DataTableクラス

テーブルの構造と値をコピーする(copy)

テーブルの構造と値をコピーするサンプルです。

using System;
using System.Data;

class Test1
{
	static void Main()
	{
		// テーブル作成
		DataTable employee = new DataTable("社員テーブル");
		employee.Columns.Add("id", typeof(int));
		employee.Columns.Add("name", typeof(String));
		employee.Columns.Add("romaji", typeof(String));

		// 1行目を作成
		DataRow row;
		row = employee.NewRow();
		row["id"] = 1;
		row["name"] = "鈴木";
		row["romaji"] = "suzuki";
		employee.Rows.Add(row); // 1行目をテーブルに追加

		employee.AcceptChanges();

		// コピー
		DataTable employee2 = employee.Copy();

		employee.Rows[0]["name"] = "test";

		Console.WriteLine(employee.Rows[0]["name"]); //test
		Console.WriteLine(employee2.Rows[0]["name"]); //鈴木
	}
}

9~22行目は、新規でデータテーブルを作成しています。
25行目は、Copyメソッドでテーブルの構造と値をコピーしています。
27行目は、コピー元の値を変更しています。
29行目は、コピー元です。値は変更されています。
30行目は、コピー先です。値は変更されていません。

 

テーブル構造のみコピーする(clone)

テーブル構造のみコピーするサンプルです。

using System;
using System.Data;

class Test1
{
	static void Main()
	{
		// テーブル作成
		DataTable employee = new DataTable("社員テーブル");
		employee.Columns.Add("id", typeof(int));
		employee.Columns.Add("name", typeof(String));
		employee.Columns.Add("romaji", typeof(String));

		// 1行目を作成
		DataRow row;
		row = employee.NewRow();
		row["id"] = 1;
		row["name"] = "鈴木";
		row["romaji"] = "suzuki";
		employee.Rows.Add(row); // 1行目をテーブルに追加

		employee.AcceptChanges();

		// コピー
		DataTable employee2 = employee.Clone();

		//Console.WriteLine(employee2.Rows[0]["name"]);

		// 1行目を作成
		DataRow row2;
		row2 = employee2.NewRow();
		row2["id"] = 10;
		row2["name"] = "田中";
		row2["romaji"] = "tanaka";
		employee2.Rows.Add(row2); // 1行目をテーブルに追加
		employee2.AcceptChanges();

		Console.WriteLine(employee2.Rows[0]["name"]); //田中
	}
}

9~22行目は、新規でデータテーブルを作成しています。
25行目は、Cloneメソッドでテーブル構造のみコピーしています。
27行目は、コピー先の値を表示しようとしますが値はないためエラーになります。
30行目からは、コピー先のデータテーブルに値をセットしています。

関連の記事

C# DataTableの行を追加/変更/削除する
C# DataTableをSelectで行を取得する

△上に戻る