C#简单的方法来复制或克隆的DataRow?

我正在寻找一个简单的方法来创build一个DataRow的克隆。 有点像拍这行的快照并保存。 原始行的值可以随意更改,但是我们仍然有另一个保存的副本不会更改。 这是正确的方法吗?

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

这是否只是将Snapshot的ItemArray引用指向Source中的引用,还是实际上创build了一个单独的副本? 我应该这样做吗?

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

编辑:我不认为第二个代码片段实际编译。

您可以使用ImportRow方法将Row从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[]; 

将工作

但要确保新表可以在新表中访问,则需要closures表:

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