现在的位置: 首页 > 综合 > 正文

DataSet.Merge与DataTable操作小技巧

2013年08月06日 ⁄ 综合 ⁄ 共 685字 ⁄ 字号 评论关闭

对DataTable的一些操作,如:想从一个DataTable中抽中一部份DataRow生成另一个DataTable,或是调整DataTable内的Sort(排序)方式等,着实让我头痛一阵子。
今天在无聊中翻看SDK2.0中的DataSet成员表时发现了Merge方法里有一个重载是DataSet.Merge (DataRow[]),作用是可以将DataRow[]直接合并到当前的DataSet中。
我开始作了一下测试。
第一个问题,将从dsA的dtA表中抽取AID>100的记录到dsB的dtA中。
大至语句如下:
dsB.Merge(dsA.Tables["dtA"].select("AID>100",""));
运行完毕后,效果比较满意。dsB中多了一个dtA的表,表内记录就是AID>100的记录。

第二个问题,将dsA中的dtA表内记录排序方式修改为AID desc
大至语句如下:
dsA.Merge(dsA.Tables["dtA"].select("","AID desc"));
结果没什么反应,数据一点变动都没有。是在想不出办法了,只是将dtA表Copy一份后再作了。
大至语句如下:
DataTable dtACopy=dsA.Tables["dtA"].copy();
dsA.Tables.Remove("dtA");
dsA.Merge(dtACopy.select("","AID desc"));
运行结果正是想要的,dtA表内的记录已经按照要求去排序好了。

这样比较适合对DataSet内的表数据分组操作。只是这样来回的Copy Remove Merge会不会代价太大就不知道了。

抱歉!评论已关闭.