我有两个数据表,dt1& DT2。 dt1有数据而dt2是新表。现在我想将一些满足特定条件的行复制到dt2。我试过以下代码,但是我得到了这个例外:
System.ArgumentException此行已属于另一个表。
foreach(DataRow dr in dt1.Rows)
{
if(Convert.ToInt32(dr["col"]) == value)
{
dt2.Rows.Add(dr);
}
}
我该如何解决这个问题?
答案 0 :(得分:4)
将dt2.Rows.Add(dr);
更改为dt2.Rows.Add(dr.ItemArray);
答案 1 :(得分:0)
你直接不能"Add"
一个DataTable行,因为它属于souce Datatable。您可以"Add"
将新创建的行添加到DataTable。
因此你得到了这个例外。
有很多方法可以解决这个问题。一些列在下面
方法1:
如果您想从源Datatable获取一行并在没有任何更改的情况下添加目标,请以这种方式使用ImportRow
。
dt2.ImportRow(dr);
方法2:
但是如果你想获取具体数据。然后使用此
foreach(DataRow dr in dt1.Rows)
{
if(Convert.ToInt32(dr["col"]) == value)
{
Datarow ndr = dt2.NewRow();
ndr["Foo"] = dr["Foo"];
//..Similarly for other rows.
dt2.Rows.Add(ndr);
}
}
答案 2 :(得分:0)
每当你向数据表添加一行时,它应该是不同的(新的)行........
Datarow newRow = null;
foreach(DataRow dr in dt1.Rows)
{
if(Convert.ToInt32(dr["col"]) == value)
{
newRow = dt2.NewRow();
newRow ["A"] = dr["A"];
dt2.Rows.Add(newRow );
}
}