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"

原文地址:http://www.cnblogs.com/xiaofengfeng/archive/2012/06/27/2565941.html

时间: 2024-10-09 17:24:22

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

js 时间操作 转载

Js获取当前日期时间及其它操作 var myDate = new Date();myDate.getYear();        //获取当前年份(2位)myDate.getFullYear();    //获取完整的年份(4位,1970-????)myDate.getMonth();       //获取当前月份(0-11,0代表1月)myDate.getDate();        //获取当前日(1-31)myDate.getDay();         //获取当前星期X(0-6,0代表

GridView编辑删除操作 (转载)

第一种:使用DataSource数据源中自带的编辑删除方法,这种不常用,在这里就不加说明了. 第二种:使用GridView的三种事件:GridView1_RowEditing(编辑).GridView1_RowUpdating(更新).GridView1_RowCancelingEdit(取消编辑).GridView1属性中将DataKeyNames的值设置为主键名,否则找不到索引,这个很重要哦. 该方法有2种操作,一种是不对绑定列转换为模板列,另外一种是转换为模板列. 这里先说不转换为模板列的

SqlServer中的merge操作(转载)

SqlServer中的merge操作(转载) 今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在technet上搜索发现别有洞天,原来是另外一个sql关键字,t-sql的语法还是相当地丰富的.本篇是一篇学习笔记,没有什么新意,这里给出technet上的地址连接供大家参考权威:http://technet.microsoft.com/zh-cn/library/bb510625.aspx,这里具体的语法不去深究了,只是把几个例

c#datatable操作

c#操作datatable 1.创建表 DataSet ds=new DataSet(); DataTable dt=new DataTable("User"); ds.Add(dt); dt.Columns.Add("user_name",typeof(string)); dt.Columns.Add("user_password",typeof(string)); dt.Columns.Add("user_page",ty

Zookeeper的shell操作(转载)

转载自: http://www.cnblogs.com/sunddenly/p/4031881.html 2.1.1 Zookeeper命令工具 再启动Zookeeper服务之后,输入以下命令,连接到Zookeeper服务: zkCli.sh -server localhost:2181 连接成功之后,系统会输出Zookeeper的相关环境及配置信息,并在屏幕输出"welcome to Zookeeper!"等信息.输入help之后,屏幕会输出可用的Zookeeper命令,如下图所示

DataTable操作(建表,建行,建列,添加数据)

public DataTable GetNewTable() { DataTable dt2 = new DataTable("NewDataSet"); //创建一个新Table,必须设置表名 dt2.Columns.Add(new DataColumn("Result",typeof(System.String))); //添加字段,并设置类型 DataRow row = dt2.NewRow(); //创建一个新的行 row["Result"

LINQ系列:LINQ to DataSet的DataTable操作

LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System.Data和System.Data.DataSetExtensions. 1. DataTable读取列表 DataSet ds = new DataSet(); // 省略ds的Fill代码 DataTable products = ds.Tables["Product"]; IEnume

Mongodb基础用法及查询操作[转载]

插入多条测试数据> for(i=1;i<=1000;i++){... db.blog.insert({"title":i,"content":"mongodb测试文章.","name":"刘"+i});                                                      ... } db.blog.list.find().limit(10).forEach(

Datatable 操作行数据

我们直接看例子.然后我加上我得理解在旁边. function getToSaveArr(){ var trs = $('#rap-table-list tbody tr');                  //获取datatable行数据 对象 var arr = new Array(); for(var i=0;i<trs.length;i++){                                 //遍历行数据对象 var tr = trs[i]; var uuid = _