如何使用其他DataTable的列结构创建新的DataTable?

时间:2013-09-25 15:45:13

标签: c# datatable .net-4.5

与标题一样 - 问题是:

如何使用其他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 = ???;

3 个答案:

答案 0 :(得分:15)

您正在寻找DataTable.Clone()方法(自框架版本1.1起可用)。

来自documentation

  

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();

答案 1 :(得分:8)

只需使用克隆架构的DataTable.Clone而不是数据:

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

现在您可以开始添加新行:

DataRow newRow = dtSecond.Rows.Add();
newRow.SetField("column1", "Value1");
newRow.SetField("column2", "Value2");
newRow.SetField("column3", "Value3");

答案 2 :(得分:5)

使用DataTable类的Clone()方法。