C#のDataTableをコピーするサンプルです。
目次
サンプル | DataTableクラス |
テーブルの構造と値をコピーする(copy) | |
テーブル構造のみコピーする(clone) |
DataTableクラス
- メモリ内のテーブルのように使用できます。
- 以下は、MicrosoftのDataTableクラスのリンクです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.datatable?view=netcore-3.1
テーブルの構造と値をコピーする(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行目からは、コピー先のデータテーブルに値をセットしています。
関連の記事