C#简单的方法来复制或克隆一个DataRow?(C# simple way to copy or c

2019-06-17 18:58发布

我在寻找一个简单的方法,使一个DataRow的克隆。 有点像服用该行的快照,并保存它。 原始行的值就可以自由改变,但我们仍然有另一个保存的副本不会改变。 这是做了正确的方法是什么?

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

这会不会只是设置快照的ItemArray引用指向一个在源或它实际上做一个独立的副本? 我应该这样做呢?

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

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

Answer 1:

您可以使用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[];

将工作



Answer 2:

但要确保你的新行是在新表中访问,你需要关闭该表:

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


文章来源: C# simple way to copy or clone a DataRow?