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 syain = new DataTable("社員テーブル");
syain.Columns.Add("id", typeof(int));
syain.Columns.Add("name", typeof(String));
syain.Columns.Add("romaji", typeof(String));
// 1行目を作成
DataRow row;
row = syain.NewRow();
row["id"] = 1;
row["name"] = "鈴木";
row["romaji"] = "suzuki";
syain.Rows.Add(row); // 1行目をテーブルに追加
syain.AcceptChanges();
// コピー
DataTable syain2 = syain.Copy();
syain.Rows[0]["name"] = "test";
Console.WriteLine(syain.Rows[0]["name"]); //test
Console.WriteLine(syain2.Rows[0]["name"]); //鈴木
}
}
9~22行目は、新規でデータテーブルを作成しています。
25行目は、Copyメソッドでテーブルの構造と値をコピーしています。
27行目は、コピー元の値を変更しています。
29行目は、コピー元です。値は変更されています。
30行目は、コピー先です。値は変更されていません。
テーブル構造のみコピーする(clone)
テーブル構造のみコピーするサンプルです。
using System;
using System.Data;
class Test1
{
static void Main()
{
// テーブル作成
DataTable syain = new DataTable("社員テーブル");
syain.Columns.Add("id", typeof(int));
syain.Columns.Add("name", typeof(String));
syain.Columns.Add("romaji", typeof(String));
// 1行目を作成
DataRow row;
row = syain.NewRow();
row["id"] = 1;
row["name"] = "鈴木";
row["romaji"] = "suzuki";
syain.Rows.Add(row); // 1行目をテーブルに追加
syain.AcceptChanges();
// コピー
DataTable syain2 = syain.Clone();
//Console.WriteLine(syain2.Rows[0]["name"]);
// 1行目を作成
DataRow row2;
row2 = syain2.NewRow();
row2["id"] = 10;
row2["name"] = "田中";
row2["romaji"] = "tanaka";
syain2.Rows.Add(row2); // 1行目をテーブルに追加
syain2.AcceptChanges();
Console.WriteLine(syain2.Rows[0]["name"]); //田中
}
}
9~22行目は、新規でデータテーブルを作成しています。
25行目は、Cloneメソッドでテーブル構造のみコピーしています。
27行目は、コピー先の値を表示しようとしますが値はないためエラーになります。
30行目からは、コピー先のデータテーブルに値をセットしています。
関連の記事