次は、データテーブルのコピー機能についてです。
これも、よく利用するのでメモメモ。
データテーブルのコピー機能には、以下の2種類があります。
スキーマのみのコピーには、以下のメソッドを利用します。
DataTable.Clone()
スキーマとデータのコピーには、以下のメソッドを利用します。
DataTable.Copy()
用途によって、使い分けます。
よく利用するのは、Cloneの方ですかね。データの処理を行う上で
Aのデータテーブルと同じ構造のBを新たに作成して、Bにデータを追加して
いって、最後にマージするとかはよくやります。
マージについては、次回メモする予定です。
以下、サンプルです。
#region DataTableSamples-03
public class DataTableSamples03 : IExecutable {
public void Execute() {
DataTable tableA = new DataTable();
tableA.Columns.Add("Val", typeof(int));
for(int i = 0; i < 10; i++) {
tableA.LoadDataRow(new object[]{i}, true);
}
Console.WriteLine("[TableA] ColumnCount = {0}" , tableA.Columns.Count);
Console.WriteLine("[TableA]RowCount = {0}" , tableA.Rows.Count);
//
// tableAのスキーマをtableBにコピー.
// (データはコピーしない。)
//
DataTable tableB = tableA.Clone();
Console.WriteLine("[TableB] ColumnCount = {0}" , tableB.Columns.Count);
Console.WriteLine("[TableB]RowCount = {0}" , tableB.Rows.Count);
//
// tableAのスキーマとデータをtableCにコピー.
//
DataTable tableC = tableA.Copy();
Console.WriteLine("[TableC] ColumnCount = {0}" , tableC.Columns.Count);
Console.WriteLine("[TableC]RowCount = {0}" , tableC.Rows.Count);
}
}
#endregion