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"
 
原文地址:http://www.cnblogs.com/xiaofengfeng/archive/2012/06/27/2565941.html

C# DataTable操作,转载的更多相关文章

  1. C# LINQ系列:LINQ to DataSet的DataTable操作 及 DataTable与Linq相互转换

    LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ...

  2. SqlServer中的merge操作(转载)

    SqlServer中的merge操作(转载)   今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在technet上搜索发现别有 ...

  3. C# 基础:DataTable操作、发邮件

    本文出自:https://www.cnblogs.com/2186009311CFF/p/6865909.html DataTable操作 据参数删除为0的列:包括遍历.删除.取值 public st ...

  4. 安卓自定义View进阶-Canvas之画布操作 转载

    安卓自定义View进阶-Canvas之画布操作 转载 https://www.gcssloop.com/customview/Canvas_Convert 本来想把画布操作放到后面部分的,但是发现很多 ...

  5. QTP的DataTable操作整理(注---不知转载多少遍)

    返回值:数字 示例: 以下示例使用 GetRowCount 方法查找 MySheet 运行时数据表中最长的列中的总行数,并将其写入报告. rowcount = DataTable.GetSheet(& ...

  6. QTP中DataTable操作大全

    序曲 假设现在有一个Excel文件:D:\data.xls,里面的具体内容如下:有两个Sheet,第一个叫Login,第二个叫InsertOrder: 当前QTP的Test中有两个Action:Log ...

  7. DataTable 操作

    public void CreateTable() { //创建表 DataTable dt = new DataTable(); //1.添加列 dt.Columns.Add("Name& ...

  8. [C#] DataTable 操作汇总(持续更新)

    1.DataTable 分组操作 var grow = dt.Select().GroupBy((row1) => { return new { //分组的字段 fieldA = row1[&q ...

  9. VS调试 DataTable (转载)

    调试的时候遇到一个问题:不知道怎么在自动窗口或者添加监视那里查看DataSet或者DataTable的具体的值.度娘了一下很多都是添加DataTable.Rows[][]监视,但是一行一列地看还是有点 ...

  10. LINQ系列:LINQ to DataSet的DataTable操作

    LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ...

随机推荐

  1. CSS兄弟范围选择器

    我们想要选择一部分兄弟元素,根据需要试着写了一个  td:nth-child(4)~td:not(:nth-child(7)~td) {        display: none;  } 从第5个元素 ...

  2. trzcopy

    @echo offcd /d %~dp0setlocal enabledelayedexpansionset aa=伟大的中国!我为你自豪echo 替换前:%aa%echo 替换后:%aa:中国=中华 ...

  3. vscode提交修改的时候报错:无法推送 refs 到远端。您可以试着运行“拉取”功能,整合您的更改

    vscode提交修改的时候报错:无法推送 refs 到远端.您可以试着运行"拉取"功能,整合您的更改, git操作命令行 git pull origin yourbranch  - ...

  4. [OC] 统计代码行数

    1.打开终端 2. cd 路径,或者 输入cd ,然后把要统计代码的工程拖入终端,就会出现工程的路径. 然后按下回车. 3.输入: find . -name "*.m" -or - ...

  5. 实验一 密码引擎-1-OpenEuler-OpenSSL编译

    1. 下载最新的OpenSSL源码 2. 用自己的8位学号建立一个文件夹,cd 你的学号,用pwd获得绝对路径 3. 参考https://www.cnblogs.com/rocedu/p/508762 ...

  6. https://ghproxy.com/ 下载代理

    https://github.com/microsoft/PowerToys/releases/tag/v0.58.0 https://github.com/jgraph/drawio-desktop ...

  7. mangodb查询语句

    1.查询所有记录 db.userInfo.find(); 相当于: select* from userInfo; 默认每页显示20条记录,当显示不下的情况下,可以用it迭代命令查询下一页数据.注意:键 ...

  8. 1903021126 申文骏 Java 第七周作业 客户类测试

     项目  内容 课程班级博客链接 19级信计班(本) 作业要求链接 Java 第七周作业 博客名称 1903021126  申文骏  Java 第七周作业  客户类测试 要求 每道题要有题目,代码(使 ...

  9. uniapp 模拟器的使用

    uniapp 模拟器的使用 下载夜深模拟器 uniapp  - 工具-设置 adb路径  模拟器路径 模拟器端口号 :26944

  10. Python 错误:ModuleNotFoundError: No module named 'conf'

    问题描述: 编译器无法使用cmd命令来执行py文件,结果可能报ModuleNotFoundError的错误. 比如在cmd任务栏执行:python E:\myProgram\Python\spider ...