DataTable 索引及排序功能

最近喜欢用上了DataTable对数据的处理,感觉DataTable很强大。。。不用再在查询语句中进行处理sql语句。呵呵。这就懒人的好出,

好了废话不多说。还是把我我最近用到关于DataTable的排序功能贴出来,方便自己,也方便其他同学使用:

 

public void getDataRow(DataTable dt, ref DataRow[] dr)
        {
   //这就是排序,并过滤DataTable。DataTable的select过滤同学们不陌生吧
   //前一个是过滤字段,后面是排序字段(这儿可以升序和降序排序默认asc)
            DataRow[] rows = dt.Select("", "orderColumns Asc");
   //这个是克隆原来的DataTable
            DataTable tempDataTable = dt.Clone();
   //清空不用说了吧
            tempDataTable.Clear();
   //把排好序的datarow要用导入行的方式,DataTable.ImportRow(DataRow)
            foreach (DataRow row in rows)
                tempDataTable.ImportRow(row);
   //把排好序的DataTable赋值给自己以前的DataTable覆盖
            dt = tempDataTable;
   //呵呵这个是我在项目中使用到的。我的需求是要先排序再过滤,
          // dr = dt.Select( "Columns=filterColumns" );

        }
好了这个方法写好了。返回的是一个DataRow。当然你也可这样实现它:
public void getDataRow(DataTable dt, ref DataRow[] dr)
        {
   //一行代码就搞定。
   dr = dt.Select("Columns=filterColumns", "orderColumns Asc");
}
下面试我在网上搜到的其他方式。可以借鉴一下。。。

一、重生法
dstaset.Tables.Add(dt)
dataset.Tables(0).DefaultView.Sort = "id desc"

--------------------------------------------------------------------------------

二、直接法
dv = New DataView(dt)
dv.Sort = "id desc"

--------------------------------------------------------------------------------

三、間接法
dv = New DataView(ds.Tables[0])
dv.Sort = "id desc"

DataRow[] rows = dataTable1.Select("", "ord asc");

DataTable t = DataTable1.Clone();

t.Clear();

foreach (DataRow row in rows)

    t.ImportRow(row);

DataTable1 = t;

VS2005中这种方法最简单:
DataView dv = dt.DefaultView;
dv.Sort = "c1 Asc";
DataTable dt2 = dv.ToTable();

----

//拿到数据源
DataView dv = this.dtDataSource.Copy().DefaultView;
//排序
dv.Sort = "Columns1 asc,Columns2 asc,Columns3 asc";
//过滤重复数据
//DataTable dt = dv.ToTable(true, "Columns1", "Columns2", "Columns3");
//不过滤重复数据
DataTable dt = dv.Table.Copy();

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值