此行已经属于另一个表

Posted

技术标签:

【中文标题】此行已经属于另一个表【英文标题】:This row already belongs to another table 【发布时间】:2012-03-11 03:12:42 【问题描述】:

我的 asp.net 网站有问题,我正在尝试将数据行从一个数据表复制到另一个数据表,但每次我尝试这样做时都会出现错误:

This row already belongs to another table.

【问题讨论】:

【参考方案1】:

如错误所述,DataRow 实例与其拥有的DataTable 绑定,不能添加到另一个表。

改为使用ImportRow() method 来制作行的实际副本。

【讨论】:

好吧,微软……你意识到情况就是这样,为什么不呢,你在这种情况下为我们运行 ImportRow,而不是抛出一个自鸣得意的异常? 叹息 @SeanKendle:不; add 有时会在没有任何指示的情况下复制该行是一个非常糟糕的主意。 是否存在说“添加行”不会意味着复制的情况?或者,如果它已经是另一个表的成员,您甚至可以在哪里使用添加行? @SeanKendle:table.NewRow()。或者,删除,然后重新添加。 好的,所以,在我看来,我的观点是正确的。如果您说“将此现有行(另一个表的成员)添加到另一个表中”,该语言应该足够聪明,可以知道您的意思是“制作现有行的副本,然后添加副本到这张桌子上。”只是我的观点。有时 VB.net 不是很直观。【参考方案2】:

举例

您需要首先使用来自dr 的值创建一个新的Row。一个DataRow 只能属于一个DataTable

你也可以使用 Add 来接受一个值数组:

myTable.Rows.Add(dr.ItemArray)

或者可能更好:

myTable.ImportRow(dr);

Link

【讨论】:

以上是关于此行已经属于另一个表的主要内容,如果未能解决你的问题,请参考以下文章

该行已经属于另一个表.怎么解决

c# 该行已经属于另一个表

System.ArgumentException: 该行已经属于另一个表。看下面代码

C#两个DataTable拷贝问题:该行已经属于另一个表的解决方法

在同一个数据库表中将一行拆分为多行

DataTable 已经属于另一个 DataSet