如何从另一个 DataTable 创建具有相同列结构的新 DataTable?

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
听起来你正在寻找.Clone()方法。该方法的详细信息请参阅此链接 - Bridge
3个回答

17

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

根据文档

Clone 创建一个与原始 DataTable 具有相同结构的新 DataTable,但不会复制任何数据(新 DataTable 不包含任何 DataRow)。要将结构和数据都复制到新 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();

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

3
dtFirst.First(); 是否打错了? :) - Kamil

5

使用 DataTable 类的 Clone() 方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接