首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >复制或克隆DataRow的简单方法?

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

Stack Overflow用户
提问于 2012-08-19 15:39:29
回答 2查看 210.2K关注 0票数 124

我正在寻找一种简单的方法来克隆一个DataRow。有点像对该行进行快照并将其保存。然后,original Row的值可以自由更改,但我们仍然有另一个保存的副本,该副本不会更改。这是正确的做法吗?

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

这是否只是将快照的ItemArray引用设置为指向源代码中的引用,还是实际上创建了一个单独的副本?我应该这样做吗?

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

编辑:我认为第二个代码片段实际上并没有被编译。

EN

回答 2

Stack Overflow用户

发布于 2020-02-24 23:10:02

您似乎不想保留整个DataTable作为副本,因为您只需要一些行,对吧?如果您有一个可以在表上使用select指定的creteria,那么可以将这些行复制到DataRow的一个额外的备份数组中,如下所示

DataRow[] rows = sourceTable.Select("searchColumn = value");

.Select()函数有几个选项,例如,可以将这个选项读取为SQL

SELECT * FROM sourceTable WHERE searchColumn = value;

然后,您可以如上所述导入所需的行。

targetTable.ImportRows(rows[n])

...for任意有效的n,但每个表中的列必须相同。

关于ImportRow,你应该知道的是,在运行时使用主键时会出现错误!

首先,我想检查是否已经存在同样由于缺少主键而失败的行,但是检查总是失败。最后,我决定完全清除现有行,并再次导入我想要的行。

第二个问题确实有助于理解发生了什么。我使用import函数的方法是在一列中复制具有交换条目的行。我意识到它总是变化的,它仍然是对数组中的行的引用。我首先必须导入原始文件,然后更改我想要的条目。

引用还解释了当我第一次尝试导入行时出现的主键错误,因为它实际上是双倍的。

票数 1
EN

Stack Overflow用户

发布于 2015-04-05 03:03:02

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

DataTable destination = new DataTable(source.TableName);
destination = source.Clone();
DataRow sourceRow = source.Rows[0];
destination.ImportRow(sourceRow);
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12025012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档