Как создать новый DataTable со структурой столбцов из другого DataTable?

как в названии-вопрос:

Как создать новый 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 ответов


вы ищете DataTable.Clone() метод (доступен с версии 1.1 framework).

С документация:

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

просто использовать DataTable.Clone который клонирует схему, но не данные:

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

Теперь вы можете начать добавлять новые строки:

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

использовать Clone () метод класса DataTable.