C# 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)排序的思考       因项目需要,在获得dataset(或者DataTable)之后要对该table进行重新排序,排序规则按照数组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"C# DataTable操作,转载的更多相关文章
- C# LINQ系列:LINQ to DataSet的DataTable操作  及 DataTable与Linq相互转换
		LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ... 
- SqlServer中的merge操作(转载)
		SqlServer中的merge操作(转载) 今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在technet上搜索发现别有 ... 
- C#  基础:DataTable操作、发邮件
		本文出自:https://www.cnblogs.com/2186009311CFF/p/6865909.html DataTable操作 据参数删除为0的列:包括遍历.删除.取值 public st ... 
- 安卓自定义View进阶-Canvas之画布操作 转载
		安卓自定义View进阶-Canvas之画布操作 转载 https://www.gcssloop.com/customview/Canvas_Convert 本来想把画布操作放到后面部分的,但是发现很多 ... 
- QTP的DataTable操作整理(注---不知转载多少遍)
		返回值:数字 示例: 以下示例使用 GetRowCount 方法查找 MySheet 运行时数据表中最长的列中的总行数,并将其写入报告. rowcount = DataTable.GetSheet(& ... 
- QTP中DataTable操作大全
		序曲 假设现在有一个Excel文件:D:\data.xls,里面的具体内容如下:有两个Sheet,第一个叫Login,第二个叫InsertOrder: 当前QTP的Test中有两个Action:Log ... 
- DataTable 操作
		public void CreateTable() { //创建表 DataTable dt = new DataTable(); //1.添加列 dt.Columns.Add("Name& ... 
- [C#] DataTable 操作汇总(持续更新)
		1.DataTable 分组操作 var grow = dt.Select().GroupBy((row1) => { return new { //分组的字段 fieldA = row1[&q ... 
- VS调试 DataTable (转载)
		调试的时候遇到一个问题:不知道怎么在自动窗口或者添加监视那里查看DataSet或者DataTable的具体的值.度娘了一下很多都是添加DataTable.Rows[][]监视,但是一行一列地看还是有点 ... 
- LINQ系列:LINQ to DataSet的DataTable操作
		LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ... 
随机推荐
- python连接Oracel、postgreSQL、SQLserver、Mysql、mongodb、redis等常用数据库方法汇总
			python对接常用数据库 python有着极其丰富的第三方的库,如此强大的python语言操作各大数据库,不管你使用的关系型数据库是oracle,mysql, sqlserver,还是关系型数据库r ... 
- No.1.4
			选择器进阶 [复合选择器]:后代选择器:空格 语法:选择器1 选择器2 {css} 子代选择器:> 语法:选择器1>选择器2 {css} [并集选择器]:, 语法:选择器1 , ... 
- 1996. 游戏中弱角色的数量 (Medium)
			问题描述 1996. 游戏中弱角色的数量 (Medium) 你正在参加一个多角色游戏,每个角色都有两个主要属性: 攻击 和 防御 .给你一个二维整数数组 properties ,其中 properti ... 
- 敌兵布阵 HDU - 1166 - 单点修改,区间查询:树状数组/线段树
			C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况.由于 ... 
- VUE学习-组件通信
			vue组件通信 页面传值:$route/${prop} 组件传值: 父组件传值给子组件:参数传值 子组件传值给父组件:给父组件传过来函数传参数:通过插槽的v-slot,绑定参数 组件通信一般分为以下几 ... 
- ORACLE 数据库备份脚本(数据泵2-指定用户)
			#!/bin/bash export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK #定义字符集RQ=`date +20%y-%m-%d` #创建数据泵目录directory, ... 
- 数据库负载均衡  happroxy 中间器(Nginx)容器的安装与配置
			docker 镜像中安装haproxy 1.下载并安装haproxy镜像 docker pull happroxy # docker pull haproxy:1.7 2.查看镜像 docker i ... 
- Linux非正式学习随笔(1)
			11.5进linux学的第一件事,找个中文输入法.Linux是一套免费的类unix操作系统GPL:gnu通用公共许可证.托马斯斯托曼提出gnu计划,自由软件思想的一个协议.Linux诞生1991年10 ... 
- hive:使用concat_ws实现 array转string案例
			concat_ws(',',collect_set(if(step_name <> '',step_name,null))) AS step_names, 
- Kafka相关问题
			Kafka有哪几个部分组成 生产者.消费者.topic.group.partition kafka的group1)定义:即消费者组是 Kafka 提供的可扩展且具有容错性的消费者机制.在Kafka中, ... 
