С# простой способ скопировать или клонировать DataRow?

Я ищу простой способ сделать клон DataRow. Это похоже на съемку этой строки и ее сохранение. Значения исходного Row затем могут быть изменены, но у нас есть еще одна сохраненная копия, которая не изменяется. Это правильный способ сделать это?

    DataRow Source, Destination;
    //Assume we create some columns and fill them with values
    Destination.ItemArray = Source.ItemArray;

Будет ли это указывать только ссылку Snapshot ItemArray на то, что указывает на источник в источнике, или он действительно делает отдельную копию? Должен ли я сделать это вместо этого?

    Destination.ItemArray = Source.ItemArray.Clone();

EDIT: я не думаю, что второй фрагмент кода действительно компилируется.

Ответ 1

Вы можете использовать метод ImportRow для копирования строки из DataTable в DataTable с помощью той же схемы:

var row = SourceTable.Rows[RowNum];
DestinationTable.ImportRow(row);

Update:

С вашим новым Edit, я считаю:

var desRow = dataTable.NewRow();
var sourceRow = dataTable.Rows[rowNum];
desRow.ItemArray = sourceRow.ItemArray.Clone() as object[];

будет работать

Ответ 2

Но чтобы убедиться, что ваша новая строка доступна в новой таблице, вам нужно закрыть таблицу:

DataTable Destination = new DataTable(Source.TableName);
Destination = Source.Clone();
DataRow sourceRow = Source.Rows[0];
Destination.ImportRow(sourceRow);