C#にはデータベースから取得したデータをメモリ上に格納する為の「System.Data.DataSet」クラスがあります。
DataSetクラスはとても柔軟に構造を定義して値を格納する事ができるクラスです。
DataSetクラスは複数のDataTableクラスを持つことが可能で、DataTableクラスは複数のカラムを自由に設計する事が出来ます。
DataSetの構造とデータを複製する
DataSetクラスには複雑に設計されたデータを複製する為のCopyメソッドが用意されています。
データの複製が必要になった場合は、Copyメソッドを使って新たなオブジェクトを作成する事が出来ます。
//複製元のDataSetを作成
var dset = new DataSet();
var dtab = new DataTable("Table1");
dset.Tables.Add(dtab);
var fld1 = new DataColumn("Field1", typeof(int));
dtab.Columns.Add(fld1);
var fld2 = new DataColumn("Field2", typeof(string));
dtab.Columns.Add(fld2);
var row1 = dtab.NewRow();
row1["Field1"] = 1;
row1["Field2"] = "壱";
dtab.Rows.Add(row1);
var row2 = dtab.NewRow();
row2["Field1"] = 2;
row2["Field2"] = "弐";
dtab.Rows.Add(row2);
Console.WriteLine("フィールド数:" + dset.Tables[0].Columns.Count); // Columnsは2個
Console.WriteLine("レコード数 :" + dset.Tables[0].Rows.Count); // Rowsは2個
//複製したオブジェクトを作成
var copySet = dset.Copy();
Console.WriteLine("フィールド数:" + copySet.Tables[0].Columns.Count); // Columnsは2個
Console.WriteLine("レコード数 :" + copySet.Tables[0].Rows.Count); // Rowsは2個

コメント
コメントを投稿