C#—DataTable常见用法

1.构建DataTable数据源

DataTable dt_new= new DataTable();

dt_new.Columns.Add("column1", typeof(string));   
dt_new.Columns.Add("column2", typeof(string));  
dt_new.Columns.Add("column3", typeof(Double));   

DataRow dr = dt_new.NewRow();
dr["column1"] = column1_value;
dr["column2"] = column2_value;
dr["column3"]=Convert.ToDouble(column3_value);
//将DataRow加入数据表
dt_new.Rows.Add(dr);

2.更改数据列数据类型

  //复制DataTable 结构不包含数据
 DataTable dt_temp = dt_new.Clone();

 dt_temp .Columns["column1"].DataType = typeof(Double);//更改列数据类型

            //填充数据
            foreach (DataRow row in dt_new.Rows)
            {
                if (!row["column1"].ToString().Equals("NULL"))
                {
                    dte_temp.ImportRow(row);//添加进新表
                }


            }

3.DataTable数据查询

 DataTable dt_tmp = new DataTable();
 //注意,字符串值要加引号
 string filterExpression = "device_id= '" + task.CompareDeviceID+"'";

            DataRow[] arrayDR = dt_fix.Select(filterExpression);
             if (arrayDR != null)
             {
             //转换成DataTable
                 dt_tmp = ToDataTable(arrayDR);               
             }

4.DataTable排序

//dt_fix和dt_fix_temp 为DataTable
dt_fix.DefaultView.Sort = "device_id asc";//根据ID排序 升序,desc降序
dt_fix_temp = dt_fix.DefaultView.ToTable();

DataTable常见错误:

1.该行已经属于另一个表。
这个错误经常出现在将DataRow添加或插入到DataTable时。
解决方法:
(1)如果是添加Add

DataTable dt1;//已有的数据表
DataTable dt2=new DataTable();//新表
dt2=dt1.Clone();//将dt1的结构和数据拷贝给dt2
DataRow dr=dt1.Select(filter); 

dt2.Rows.Add(dr);//这句会报错
//上面的语句 应替换成下面的方法
dt2.Rows.Add(dr.ItemArray);

(2)如果是插入

dt2.Rows.InsertAt(dr, index);//这句会报错
//应替换成下面这两句
DataRow dr_temp=dt2.NewRow();
dr_temp.ItemArray = dr.ItemArray

2.该表已经属于另一个DataSet
这种错误常见于将一个DataTable添加进一个DataSet时。
解决方法:

DataSet ds=new DataSet();
 DataTable dt1= GetDataTable( dt_allIssues);//该方法内dt1被添加进另一个DataSet,导致下面语句报错
 ds.Tables.Add(dt1);//这句报错
 //应替换成下面这两句
DaTaTable dt_temp = dt1Copy();dt1属于另一个DataSet,所以需要copy一个DataTable
ds.Tables.Add(dt_temp);
  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值