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);