DataTable排序(转)
DataTable 排序
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 = "款 asc,項 asc,目 asc"; //过滤重复数据 //DataTable dt = dv.ToTable(true, "款", "項", "目"); //不过滤重复数据 DataTable dt = dv.Table.Copy(); -----------------------------------------------关于DataView(DataTable)排序的思考 因项目需要,在获得<a target="_blank" style="color: #0000F0; display:inline; position:static; background:none;" href="http://www.so.com/s?q=dataset&ie=utf-8&src=se_lighten_f">dataset</a>(或者DataTable)之后要对该table进行重新排序,排序规则按照<a target="_blank" style="color: #0000F0; display:inline; position:static; background:none;" href="http://www.so.com/s?q=%E6%95%B0%E7%BB%84&ie=utf-8&src=se_lighten_f">数组</a>fids元素的顺序进行。在测试的时候,我用简单的思考方法,在table上增加一列dis,来存放该行的主键在fids中的对应项的索引,一个循环之后,dis都被赋了值,现在就要排序了,因为datatable没有排序功能,就选择了转换DataTable为DataView,然后对DataView进行排序,关键代码如下:DataView dw = dt.DefaultView;dw.Sort = "dis,发布日期 desc";然后把dw绑定到DataGird输出,结果正好符合原意。可是具体使用中却出了问题,因为我对dw又进行了一次处理,取该分页需要的某几项绑定到DataGird,于是结果和排序之前一样,没有了变化。究其原因,才发现,这里的DataView只是设定了排序规则,并没有实施排序,那么排序在什么时候发生呢,应该是在绑定到DataGird的时候才发生,所以我后来的方法就出了问题。总结如下:DataView的筛选和排序功能都是在绑定到数据控件的时候才执行的,如果你是简单的需求(也就是说不需要再取其中的部分数据来绑定数据控件),那就可以使用该功能。我的问题的最终解决方法如下(只使用了简单的循环):private DataTable SortTable(DataTable dt,string[] pids) { DataTable dt0 = dt.Clone(); //复制原表结构 for(int i=0;i<pids.Length;i++) { if(pids[i] != string.Empty) { DataRow[] drs = dt.Select("pos_id=" + pids[i]); if(drs.Length > 0) { foreach(DataRow dr in drs) { dt0.ImportRow(dr); //导入行 } } } } return dt0; }说明:就是对排序的数组循环,在datatable中找对应的行,然后复制到新表中。该方法的效率还是可以的,不过如果交集次数大于20,000,000的时候,就会有效率问题。**************************************************************** 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"-------------------------------------------------------------- System.Data.DataTable table = new System.Data.DataTable(); table.Columns.Add("aa", typeof(string)); System.Data.DataRow row = table.NewRow(); row["aa"] = "sdf"; table.Rows.Add(row); System.Data.DataView dv = new System.Data.DataView(table); table.Columns.Add("bb", typeof(string)); DataTable dt = con.getDGResulthk(sql); DataColumn col1 = con.getCol(sql1); DataColumn col = dt.Columns.Add("工资"); DataRow dr = dt.NewRow(); dr["工资"] = col1; dt.Rows.Add(dr); dataGridView1.DataSource = dt; dataGridView1.AutoResizeColumns(); System.Data.DataTable table = new System.Data.DataTable(); table.Columns.Add("aa", typeof(string)); System.Data.DataRow row = table.NewRow(); row["aa"] = "sdf"; table.Rows.Add(row); System.Data.DataView dv = new System.Data.DataView(table); DataTable drReport=new DataTable();DataRow[] pdrs111 = dtReport.Select("code=''" + strNoCode + "''"); if (pdrs111.Length > 0) { foreach (DataRow dr111 in pdrs111) { decfd_1 = Convert.ToDouble(dr111["fd"].ToString()); dr111["fd_no"] = dtNOValue; dr111["fd_no_toal"] = decfd_1 + dtNOValue; } } dstaset.Tables.Add(dt)dataset.Tables(0).DefaultView.Sort = "id desc"dv = New DataView(ds.Tables[0])dv.Sort = "id desc"DataTable排序(转)的更多相关文章
- C# dataTable 排序
DataView dv = ds.DefaultView; dv.Sort = "header asc"; ds = dv.ToTable(); C# dataTable 排序
- C# Datatable排序
在C#中要对Datatable排序,可使用DefaultView的Sort方法.先获取Datatable的DefaultView,然后设置 得到的Dataview的sort属性,最后用视图的ToTab ...
- C# 对Datatable排序
一,在C#中要对Datatable排序,可使用DefaultView的Sort方法.先获取Datatable的DefaultView,然后设置 得到的Dataview的sort属性,最后用视图的ToT ...
- [DataTable]控件排序事件中用DataView及DataTable排序
控件排序事件中用DataView及DataTable排序 文章分类:.net编程 在做ASP.NET页面开发时,经常要用到dataset(或者DataTable),绑定到DataGrid或GridVi ...
- 在C#中对Datatable排序【DefaultView的Sort方法】
在C#中对Datatable排序,[DefaultView的Sort方法] 代码如下: DataTable dt = new DataTable(); dt.Columns.Add("ID& ...
- DataTable排序(来自其他空间)
DataTable排序 DataRow[] rows = dataTable1.Select("", "ord asc"); DataTable t = Dat ...
- C# Datatable排序(转)
C# Datatable排序 在C#中要对Datatable排序,可使用DefaultView的Sort方法.先获取Datatable的DefaultView,然后设置得到的Dataview的sort ...
- 【转】C# Datatable排序与取前几行数据
转自:http://www.cnblogs.com/linyechengwei/archive/2010/06/14/1758337.html http://blog.csdn.net/smartsm ...
- DataSet,DataTable排序(转载)
DataSet,DataTable排序 关于对已经绑定的DataSet的排序的问题: DataSet ds=new DataSet();DataView dv=new DataView();dv. ...
随机推荐
- 使用 IN 的子查询
通过 IN(或 NOT IN)引入的子查询结果是一列零值或更多值.子查询返回结果之后,外部查询将利用这些结果. 下列查询会找到所有曾出版过商业书籍的出版商的名称. USE pubs SELECT pu ...
- Oracle 分析函数之 lag和lead
Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag)和后N行的数据(Lead)作为独立的列. 这种操作可以代替表的自联接,并且LAG和LEAD有更高的效率. /*语法*/ ...
- golang flag包简单例子
package main import ( "flag" "fmt" ) var workers int; func main() { flag.IntVar( ...
- SQL 变量
1.变量可以暂时储存数据 --定义变量: declare @xxx int --变量赋值: set @xxx=1 select @xxx=3 --变量的使用: print @xxx 2.--全 ...
- [Spring] - Property注入
使用Spring注入Properies文件方法: 1.src中新建一个settings.properties文件,内容如下: db_driverClassName=com.mysql.jdbc.Dri ...
- P,NP,NPC,NPC-HARD
P: 能在多项式时间内解决的问题 NP: 不能在多项式时间内解决或不确定能不能在多项式时间内解决,但能在多项式时间验证的问题 NPC: NP完全问题,所有NP问题在多项式时间内都能约化(Reducib ...
- A Brief Introduction to Markovs Chains
本文译自A Brief Introduction to Markovs Chains 译者按: 前面一篇文章讲的是蒙特卡洛积分,也就是通过生成符合特定分布的随机变量来近似计算积分值,例如: \(E = ...
- Node.js高级编程读书笔记 - 2 文件和进程处理
Outline 3 文件.进程.流和网络 3.1 查询和读写文件 3.2 创建和控制外部进程 3.3 读写数据流 3 文件.进程.流和网络 3.1 查询和读写文件 path 从Node 0.8起,pa ...
- java中的final关键词
参考资料: http://www.cnblogs.com/dolphin0520/p/3736238.html final是个修饰词,可以修饰类.方法.变量. 1. 修饰类 修饰类,就表示这个类不能被 ...
- HDU 1372 Knight Moves (bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1372 Knight Moves Time Limit: 2000/1000 MS (Java/Othe ...