如何从其他数据表创建具有列结构的新数据表

本文关键字:数据表 结构 创建 其他 | 更新日期: 2023-09-27 18:32:50

>如标题 - 问题是:

如何从其他数据表创建具有列结构的新数据表?

我需要空的数据表才能在其中使用.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 = ???;

如何从其他数据表创建具有列结构的新数据表

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

从文档中:

克隆创建具有与原始数据表相同的结构的新数据表 数据表,但不复制任何数据(新的数据表不会 包含任何数据行)。将结构和数据复制到新的 数据表,使用复制。

在您的示例中:

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

只需使用克隆模式但不克隆数据的DataTable.Clone

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

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

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

使用 DataTable 类的 Clone() 方法。