С# простой способ скопировать или клонировать 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);