В C# DataRow представляет одну строку данных в DataTable. Однако могут возникнуть ситуации, когда вам потребуется преобразовать DataRow в новый DataTable. В этой статье блога мы рассмотрим различные методы достижения такого преобразования, приведя попутно примеры кода. К концу этой статьи вы получите полное представление о различных подходах, доступных для преобразования DataRow в DataTable в C#.
Метод 1: использование метода Clone
Метод Clone создает новый объект DataRow с той же схемой, что и исходный DataRow. Добавив клонированную строку DataRow в новую таблицу DataTable, вы можете эффективно преобразовать ее.
DataRow originalRow = ...; // Obtain the original DataRow
DataTable newTable = originalRow.Table.Clone();
newTable.ImportRow(originalRow);
Метод 2: использование метода копирования
Метод копирования позволяет создать новую таблицу данных и скопировать в нее строку данных. Этот метод также копирует схему таблицы и ограничения.
DataRow originalRow = ...; // Obtain the original DataRow
DataTable newTable = originalRow.Table.Copy();
newTable.ImportRow(originalRow);
Метод 3: создание новой таблицы данных и добавление столбцов вручную
Этот метод включает в себя создание новой таблицы данных и добавление столбцов вручную в соответствии со схемой DataRow. Затем вы можете создать новую строку данных, скопировать значения из исходной строки данных и добавить ее в новую таблицу данных.
DataRow originalRow = ...; // Obtain the original DataRow
DataTable newTable = new DataTable();
foreach (DataColumn column in originalRow.Table.Columns)
{
newTable.Columns.Add(column.ColumnName, column.DataType);
}
DataRow newRow = newTable.NewRow();
foreach (DataColumn column in originalRow.Table.Columns)
{
newRow[column.ColumnName] = originalRow[column.ColumnName];
}
newTable.Rows.Add(newRow);
Метод 4: использование LINQ для создания новой таблицы данных
LINQ предоставляет краткий способ преобразования DataRow в DataTable. Используя метод расширения CopyToDataTable
, вы можете легко добиться такого преобразования.
DataRow originalRow = ...; // Obtain the original DataRow
DataTable newTable = originalRow.Table.Clone();
newTable.Rows.Add(originalRow.ItemArray);