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


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

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

будет ли это просто установить ссылку Itemarray моментального снимка, чтобы указать на один в источнике или он на самом деле делает отдельную копию? Я должен сделать это?

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

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

2 94

2 ответа:

можно использовать ImportRow метод чтобы скопировать строку из DataTable в DataTable с той же схемой:

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

обновление:

С вашим новым редактированием, я считаю:

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

совместимость

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

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