当前位置: 移动技术网 > IT编程>开发语言>c# > C# DataTable使用方法详解

C# DataTable使用方法详解

2019年07月18日  | 移动技术网IT编程  | 我要评论
在项目中常常常使用到datatable,假设datatable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,现对datatable的使用技巧进行一下

在项目中常常常使用到datatable,假设datatable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,现对datatable的使用技巧进行一下总结。

1、添加引用

using system.data;

2、创建表

//创建一个空表
datatable dt = new datatable();
//创建一个名为"table_new"的空表
datatable dt = new datatable("table_new");

3、创建列

//1.创建空列
datacolumn dc = new datacolumn();
dt.columns.add(dc);
//2.创建带列名和类型名的列(两种方式任选其一)
dt.columns.add("column0", system.type.gettype("system.string"));
dt.columns.add("column0", typeof(string));
//3.通过列架构添加列
datacolumn dc = new datacolumn("column1",system.type.gettype("system.datetime"));
datacolumn dc = new datacolumn("column1", typeof(datetime));
dt.columns.add(dc);

4、创建行

//1.创建空行
datarow dr = dt.newrow();
dt.rows.add(dr);
//2.创建空行
dt.rows.add();
//3.通过行框架创建并赋值
dt.rows.add("张三",datetime.now);//add里面参数的数据顺序要和dt中的列的顺序对应 
//4.通过复制dt2表的某一行来创建
dt.rows.add(dt2.rows[i].itemarray);

5、赋值和取值

//新建行的赋值
datarow dr = dt.newrow();
dr[0] = "张三";//通过索引赋值
dr["column1"] = datetime.now; //通过名称赋值
//对表已有行进行赋值
dt.rows[0][0] = "张三"; //通过索引赋值
dt.rows[0]["column1"] = datetime.now;//通过名称赋值
//取值
string name=dt.rows[0][0].tostring();
string time=dt.rows[0]["column1"].tostring();

6、筛选行

//选择column1列值为空的行的集合
datarow[] drs = dt.select("column1 is null");
//选择column0列值为"李四"的行的集合
datarow[] drs = dt.select("column0 = '李四'");
//筛选column0列值中有"张"的行的集合(模糊查询)
datarow[] drs = dt.select("column0 like '张%'");//如果的多条件筛选,可以加 and 或 or
//筛选column0列值中有"张"的行的集合并按column1降序排序
datarow[] drs = dt.select("column0 like '张%'", "column1 desc");

7、删除行

//使用datatable.rows.remove(datarow)方法
dt.rows.remove(dt.rows[0]);
//使用datatable.rows.removeat(index)方法
dt.rows.removeat(0);
//使用datarow.delete()方法
dt.row[0].delete();
dt.acceptchanges();

//-----区别和注意点-----
//remove()和removeat()方法是直接删除
//delete()方法只是将该行标记为deleted,但是还存在,还可datatable.rejectchanges()回滚,使该行取消删除。
//用rows.count来获取行数时,还是删除之前的行数,需要使用datatable.acceptchanges()方法来提交修改。
//如果要删除datatable中的多行,应该采用倒序循环datatable.rows,而且不能用foreach进行循环删除,因为正序删除时索引会发生变化,程式发生异常,很难预料后果。
for (int i = dt.rows.count - 1; i >= 0; i--)
{
  dt.rows.removeat(i);
}

8、复制表

//复制表,同时复制了表结构和表中的数据
datatable dtnew = new datatable();
dtnew = dt.copy();
//复制表
datatable dtnew = dt.copy(); //复制dt表数据结构
dtnew.clear() //清空数据
for (int i = 0; i < dt.rows.count; i++)
{
  if (条件语句)
  {
     dtnew.rows.add(dt.rows[i].itemarray); //添加数据行
  }
}
//克隆表,只是复制了表结构,不包括数据
datatable dtnew = new datatable();
dtnew = dt.clone();
//如果只需要某个表中的某一行
datatable dtnew = new datatable();
dtnew = dt.copy();
dtnew.rows.clear();//清空表数据
dtnew.importrow(dt.rows[0]);//这是加入的是第一行

9、表排序

datatable dt = new datatable();//创建表
dt.columns.add("id", typeof(int32));//添加列
dt.columns.add("name", typeof(string));
dt.columns.add("age", typeof(int32));
dt.rows.add(new object[] { 1, "张三" ,20});//添加行
dt.rows.add(new object[] { 2, "李四" ,25});
dt.rows.add(new object[] { 3, "王五" ,30});
dataview dv = dt.defaultview;//获取表视图
dv.sort = "id desc";//按照id倒序排序
dv.totable();//转为表

以上就是c# datatable的使用方法,希望对大家学习c#程序设计有所帮助。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网