该数组是通过对数据表的linq查询获得的。当我尝试将它添加到另一个数据表时,它给出了该行属于另一个表的异常。
需要将行添加到表格顶部而不是底部
DataRow[] recovery_rows = Sub_DataTable.Select("ProductId = " + last_product_id.ToString() + ""); //Sub_DataTable is a datatable
for (int rev_row = 0; rev_row < recovery_rows.Count(); rev_row++)
{
DataRow r_new = recovery_rows[rev_row];
// r_new = recovery_rows[rev_row];
dt_sub.Rows.InsertAt(recovery_rows[rev_row], 0);
}
答案 0 :(得分:1)
您无法将DataRow
添加到另一个DataTable
,它会引用它DataTable
并在您更改表格时抛出异常。
您可以使用导入该行的DataTable.ImportRow
并将其添加到DataRowCollection
的末尾。所以接下来的任务是将它移到第一个位置:
for (int rev_row = 0; rev_row < recovery_rows.Length; rev_row++)
{
DataRow r_new = recovery_rows[rev_row];
dt_sub.ImportRow(r_new);
dt_sub.Rows.RemoveAt(dt_sub.Rows.Count - 1);
dt_sub.Rows.InsertAt(r_new, 0);
}