15

タイトルのとおり - 質問は次のとおりです。

他のDataTableから列構造を持つ新しいDataTableを作成する方法は?

メソッドを使用するには、空の DataTable が必要.Rows.Add()です。

コード:

DataTable dtFirst = new DataTable();
dtFirst.Columns.Add("column1");
dtFirst.Columns.Add("column2");
dtFirst.Columns.Add("column3");

FillDataTableFirst(); // before I create second DataTable - dtFirst is filled

// here I need dtSecond DataTable with same column structure
// i cant just copy first data table, because it contains data

DataTable dtSecond = ???;
4

3 に答える 3

17

メソッドを探していDataTable.Clone()ます (フレームワーク バージョン 1.1 以降で利用可能)。

ドキュメントから:

Clone は、元の DataTable と同じ構造を持つ新しい DataTable を作成しますが、データはコピーしません (新しい DataTable には DataRows は含まれません)。構造とデータの両方を新しい DataTable にコピーするには、Copy を使用します。

あなたの例では:

DataTable dtFirst = new DataTable();
dtFirst.Columns.Add("column1");
dtFirst.Columns.Add("column2");
dtFirst.Columns.Add("column3");

FillDataTableFirst(); // before I create second DataTable - dtFirst is filled

DataTable dtSecond = dtFirst.Clone();
于 2013-09-25T15:48:58.753 に答える
9

DataTable.Cloneデータではなくスキーマをクローンするだけを使用します。

DataTable dtSecond = dtFirst.Clone(); // empty

これで、新しい行の追加を開始できます。

DataRow newRow = dtSecond.Rows.Add();
newRow.SetField("column1", "Value1");
newRow.SetField("column2", "Value2");
newRow.SetField("column3", "Value3");
于 2013-09-25T15:47:49.850 に答える
5

DataTable クラスのClone()メソッドを使用します。

于 2013-09-25T15:47:49.727 に答える