2015-06-25 59 views
0

该数组通过数据表上的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

什么是确切的异常和引发它的行? – dotctor

+0

当然你可以谷歌这一个......这里也许? http://stackoverflow.com/questions/722052/this-row-already-belongs-to-another-table-error-when-trying-to-add-rows –

+1

不能使用@迈克尔B因为需要添加行总是在顶部 –

回答

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); 
} 
+1

嘿感谢它的工作 –