0

目的是将一行移到 DataTable 中的第一个位置,因此一旦我得到该行,我将其删除,然后将其插入到第一个位置。

 DataRow[] dr = DataSet1.Tables[0].Select("field1 = HELLO");

 DataSet2.Tables[0].Rows.Remove(dr[0]); // Here dr[0] is removed. Why?
 DataSet2.Tables[0].Rows.InsertAt(dr[0], 0); // Now a null value is inserted

第二行将值都删除到 de DataTable 中并dr[0]作为参数传递,因此我无法在第一个位置插入。

4

2 回答 2

1

这是因为 dr[0] 只是一个参考,您需要克隆它然后删除它。

于 2012-12-11T18:50:55.993 回答
0

试试下面的逻辑...

var row = DataSet2.Tables[0].Select("field1 = HELLO").First();
var oldIndex = DataSet2.Tables[0].Rows.IndexOf(row);
DataSet2.Tables[0].Rows.InsertAt(row, 0);
DataSet2.Tables[0].Rows.RemoveAt(oldIndex);

这只是逻辑..所以忽略了空检查和异常处理

于 2012-12-11T19:04:30.317 回答