日期:2014-05-18  浏览次数:20908 次

问个datatable的问题,两个datarow操作
datatable dt 里有N多row
DataRow row1 = dt.Select(xxx);
DataRow row2 = dt.Select(xxx);

得到两个datarow
如何有效率的把row1删掉,并把row1插入到row2的后面位置?


------解决方案--------------------
dt.Select(xxx); 返回的是个row数组。
DataRow[] rows = jigyoushoTable.Select("");
rows[0].Delete();
然后删除可以用delete试试
------解决方案--------------------
DataRow row1 = dt.Select(xxx); 

Select()方法 返回的是一个row啊 弄错了吧

是返回一个DataRow [] 吧 

另外你要删除DataRow的话 直接将那个Row找出来 Delete()就可以了

如果要插入到指定行后,必须遍历了,貌似没有别的办法,不过插入的必须是一个新行

DataRow drNew = dt.NewRow();

drNew.ItemArray = dr.ItemArray;(那个取数据的行)

到了那个位置在执行dt.Add(dtNew);



------解决方案--------------------
可以用DataTable.Rows的CopyTo方法和Remove方法
------解决方案--------------------
if (this.DataSource.Rows[i] != row1) 
这么比较效率会低,你可以只比较主键,不用每个字段都比较
------解决方案--------------------
要不可以先判断row1与row2 之间和与末尾的距离,如果row2与末尾近就可以用上面的方法,如果是row1与row2之间的距离近,就可以直接把row1和row2之间的row都移位.