首页 文章

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

提问于
浏览
97

我正在寻找一种简单的方法来克隆DataRow . 有点像拍摄该行的快照并保存它 . 然后原始Row的值可以自由更改,但我们仍然有另一个保存的副本不会更改 . 这是正确的方法吗?

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

这只是将Snapshot的ItemArray引用设置为指向Source中的那个或者它实际上是否单独创建一个副本?我应该这样做吗?

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

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

2 回答

  • -3

    您可以使用ImportRow method将Row从DataTable复制到具有相同模式的DataTable:

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

    Update:

    使用您的新编辑,我相信:

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

    将工作

  • 162

    但是为了确保在新表中可以访问新行,您需要关闭表:

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

相关问题