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.Clonewhich 克隆模式而不是数据:

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 回答