向datatable添加多行时发生异常。无法存储<system.data.datarowcollection> </system.data.datarowcollection>

时间:2010-10-06 06:44:31

标签: c# .net sql ado.net datatable

idLocals是数据库中的主键

填充数据表

oDtLocalCharge = bll.GetData();

我在另一个函数中复制数据表

   dtLocalCharges = oDtLocalCharge.Copy();

并尝试使用以下代码添加行

DataRowCollection drr = oDtLocalCharge.Rows;
dtLocalCharges.Rows.Add(drr);

当我尝试向datatable添加行时,我收到错误,如下所示


Error: 
{System.ArgumentException: Unable to cast object of type 'System.Data.DataRowCollection' to type 'System.IConvertible'.Couldn't store <System.Data.DataRowCollection> in idLocals Column.  Expected type is Int32. ---> System.InvalidCastException: Unable to cast object of type 'System.Data.DataRowCollection' to type 'System.IConvertible'.

可能是主键idLocals导致问题 有什么问题?

我该如何解决这个问题?我想在dtLocalCharges

中多次添加行

2 个答案:

答案 0 :(得分:4)

首先,您不能将Add()与DataRowCollection一起使用。您需要单独添加每一行。您可能需要使用NewRow,复制值,然后调用Add。

首先尝试:

DataRowCollection drr = oDtLocalCharge.Rows;
foreach (var row in drr) dtLocalCharges.Rows.Add(row);

答案 1 :(得分:1)

这是将一个数据表的所有行导入另一个数据表的最佳方法:

datatable1.Load(New DataTableReader(datatable2))