DataTable方法总结

//(1)初始化datatable
            DataTable dt1 = new DataTable();
            dt1.Columns.Add("id", typeof(int));
            dt1.Columns.Add("names", typeof(string));
            dt1.Columns["id"].Unique = true;
            dt1.PrimaryKey = new DataColumn[] { dt1.Columns["id"] };
            //赋值
            DataRow drr = dt1.NewRow();
            drr["id"] = 1;
            drr["names"] = "张三";
            dt1.Rows.Add(drr);

//(2)datatable之间操作
            DataTable dt2 = dt1.Clone();//将dt1的数据克隆到dt2 ,只复制表结构
            DataTable dt3 = dt1.Copy();//将dt1的数据复制到dt3 复制数据和表结构
            dt3.Merge(dt1);//将dt1与dt3的数据合并,注:同表结构的复制则合并对应列,不同的会增加出不同的列

            //将dt1的数据增加到dt2
            //法一[直接复制]:
            dt2 = dt1.Copy();
            //法二[导入行的方式]:
            dt2 = dt1.Clone();
            foreach (DataRow item in dt1.Rows)
            {
                dt2.ImportRow(item);
            }
            //法三[每列循环添加]
            foreach (DataRow item in dt1.Rows)
            {
                DataRow NewRow = dt2.NewRow();
                NewRow["id"] = int.Parse(item["id"].ToString());
                NewRow["names"] = int.Parse(item["names"].ToString());
                dt2.Rows.Add(NewRow);
            }
//(3)DataSet与DataTable的操作
            //1.datatable添加到DataSet中、
            //①如果是新初始化的DataTable,不属于任何一个DataSet,则直接采用:
            DataSet ds = new DataSet();
            ds.Tables.Add(dt1);
            // ② dt1已经属于ds这个DataSet了。 因为DataTable是通过引用方式使用的,故一个DataTable不能添加到另外一个DataSet中,则采用以下方式:
            DataSet ds2 = new DataSet();
            ds2.Tables.Add(dt1.Copy());//相当于复制了一个新的datatable添加进去
            //对于在一个DataSet中添加多个DataTable,采用上面的②方式不可取,则采用以下方式将每个添加的datatable命名,否则添加进去会报已经存在DataTable,便于添加了不会重复:
            DataTable dt4 = dt1.Copy();
            dt4.TableName = "dt4";
            DataTable dt5 = dt1.Copy();
            dt4.TableName = "dt5";
            ds.Tables.Add(dt4);
            ds.Tables.Add(dt5);

 

 

(4)datatable删除

delete和remove

Delete的使用是 datatable.Rows[i].Delete();

Remove的使用是datatable.Rows.Remove(datatable.Rows[i]);

这两个的区别是,使用delete后,只是该行被标记为deleted,但是还存在,用Rows.Count来获取行数时,还是删除之前的行数.需要使用datatable.AcceptChanges()方法来提交修改.

而Remove方法则是直接删除.

如果在for循环里删除行的话,最好是使用delete方法,不然会出现count变化的情况.循环完后再使用AcceptChanges()方法提交修改,删除掉标记为deleted的行 

(5)//去掉重复行

 DataView dv = table.DefaultView;
 table = dv.ToTable(true, new string[] { "name", "code" }); 
此时table 就只有name、code无重复的两行了,如果还需要id值则
 table = dv.ToTable(true, new string[] { "id","name", "code" });//第一个参数true 启用去重复,类似distinct
(6)datatable过滤
datatable 到datatale的过滤

   DataView dvv = dt.DefaultView;
   dvv.RowFilter = "boxno in (" + id + ")";
   DataTable dtt = dvv.ToTable(); //得到过滤后的datetable值
一个DataView只支持一个RowFilter,你只能使用 not ,and 来连接多个过滤条件
datatable 到dateRow[] 的过滤

 

posted @ 2017-10-20 22:31  田青争  阅读(1503)  评论(0编辑  收藏  举报