【C#】データテーブルとデータテーブルをマージする【DataTable】
データテーブルのマージをする
「dt.Merge」を使用します。
今回は、HINMEI(品名)に対してプライマリキーの設定をしています。
※プライマリキーの設定がないと、正しくマージされないので注意です。
// データテーブルの初期化
DataTable dt = new DataTable();
// データテーブルの名前を指定
dt.TableName = "FRUIT";
// 列追加
dt.Columns.Add("HINMEI");
dt.Columns.Add("SURYO");
dt.Columns.Add("TANKA");
dt.Columns.Add("KINGAKU");
dt.PrimaryKey = new DataColumn[] { dt.Columns["HINMEI"] };
// 行追加
dt.Rows.Add("りんご", "3", "50", "150");
dt.Rows.Add("ぶどう", "1", "200", "200");
dt.Rows.Add("みかん", "10", "30", "300");
/*
今回の内容はここから
*/
DataTable dtMerge = dt.Copy();
dt.Rows[1]["SURYO"] = 100;
dt.AcceptChanges();
// データテーブルのマージをする
dtMerge.Merge(dt);
コピペですぐ試せるソースコード
今回は、まとめる必要がありませんでしたが、メソッド形式のソースコードも記載したいので載せます。
ソースコードをコピペするとそれぞれの動作が確認できると思います。
private void DataTable_Merge()
{
DataTable dt = new DataTable();
// データテーブルの名前を指定
dt.TableName = "FRUIT";
// 列追加
dt.Columns.Add("HINMEI");
dt.Columns.Add("SURYO");
dt.Columns.Add("TANKA");
dt.Columns.Add("KINGAKU");
dt.PrimaryKey = new DataColumn[] { dt.Columns["HINMEI"] };
// 行追加
dt.Rows.Add("りんご", "3", "50", "150");
dt.Rows.Add("ぶどう", "1", "200", "200");
dt.Rows.Add("みかん", "10", "30", "300");
/*
今回の内容はここから
*/
DataTable dtMerge = dt.Copy();
dt.Rows[1]["SURYO"] = 100;
dt.AcceptChanges();
// データテーブルのマージをする
dtMerge.Merge(dt);
}
まとめ
プライマリキーの設定がされていない場合は、
データが重複して追加されてしまいますが、これが少し詰まったところでした。
マージを使う場合は、必ず設定しましょう。
Microsoft 公式ページ
DataTable.Merge メソッド
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.datatable.merge?view=netframework-4.0
お問い合わせ先
Twitterの利用再開しましたのでお問い合わせのある方はTwitterまでご連絡ください。
最近のコメント