我在寻找一个简单的方法,使一个DataRow的克隆。 有点像服用该行的快照,并保存它。 原始行的值就可以自由改变,但我们仍然有另一个保存的副本不会改变。 这是做了正确的方法是什么?
DataRow Source, Destination;
//Assume we create some columns and fill them with values
Destination.ItemArray = Source.ItemArray;
这会不会只是设置快照的ItemArray引用指向一个在源或它实际上做一个独立的副本? 我应该这样做呢?
Destination.ItemArray = Source.ItemArray.Clone();
编辑:我不认为第二代码片段实际上编译。
您可以使用ImportRow
方法从数据表中复制行的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);