码迷,mamicode.com
首页 > 其他好文 > 详细

操作DataTable中的数据

时间:2016-06-13 19:07:24      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:

在项目中,经常会遇到这样的问题。用SQL从数据库中选出需要的数据存入DataTable之后,需要进行一定的处理之后,才可以用来显示在页面上。

之前对这些问题,都是遇到一个就百度一个,没有系统的处理这些问题,今天就写个文档来处理一下这个问题

先来几个简单的喽。

添加列和行:

(既然是整理, 那就写全一点吧,三个方法)

#region 方法一: 
DataTable tblDatas =new DataTable("Datas"); //表名
DataColumn dc =null; 
dc = tblDatas.Columns.Add("ID", Type.GetType("System.Int32")); 
dc.AutoIncrement =true;//自动增加 
dc.AutoIncrementSeed =1;//起始为1 
dc.AutoIncrementStep =1;//步长为1 
dc.AllowDBNull =false; //不允许为空
dc = tblDatas.Columns.Add("Product", Type.GetType("System.String")); 
dc = tblDatas.Columns.Add("Version", Type.GetType("System.String")); 
dc = tblDatas.Columns.Add("Description", Type.GetType("System.String")); 
//
DataRow newRow; 
newRow = tblDatas.NewRow(); 
newRow["Product"] ="这个地方是单元格的值"; 
newRow["Version"] ="2.0"; 
newRow["Description"] ="这个地方是单元格的值"; 
tblDatas.Rows.Add(newRow); 
newRow = tblDatas.NewRow(); 
newRow["Product"] ="这个地方是单元格的值"; 
newRow["Version"] ="3.0"; 
newRow["Description"] ="这个地方是单元格的值"; 
tblDatas.Rows.Add(newRow); 
#endregion

看完一个方法,也许会问 dc = tblDatas.Columns.Add("Product", Type.GetType("System.String")); 为什么要用  dc=  这个东西啊   tblDatas.Columns.Add("Product", Type.GetType("System.String"));  直接用之个也可以啊。确实,这样也是可以的,用 dc=  是为了方便给这个列设置属性。比如,我要设置这个列不能为空 我就可以 dc.AllowDBNull =false; 就像第一列一样

 

#region 方法二: 
DataTable tblDatas =new DataTable("Datas"); 
tblDatas.Columns.Add("ID", Type.GetType("System.Int32")); 
tblDatas.Columns[0].AutoIncrement =true; 
tblDatas.Columns[0].AutoIncrementSeed =1; 
tblDatas.Columns[0].AutoIncrementStep =1; 
tblDatas.Columns.Add("Product", Type.GetType("System.String")); 
tblDatas.Columns.Add("Version", Type.GetType("System.String")); 
tblDatas.Columns.Add("Description", Type.GetType("System.String")); 
tblDatas.Rows.Add(newobject[] { null, "a", "b", "c" }); 
tblDatas.Rows.Add(newobject[] { null, "a", "b", "c" }); 
tblDatas.Rows.Add(newobject[] { null, "a", "b", "c" }); 
tblDatas.Rows.Add(newobject[] { null, "a", "b", "c" }); 
tblDatas.Rows.Add(newobject[] { null, "a", "b", "c" }); 
#endregion

 

这个方法没有使用到 dc=   所用设置属性的时候  就要tblDatas.Columns[0].AutoIncrement =true; 这样去设置, 个人觉得比较麻烦。这个就是给Table的列赋值的时候,一次把一行的数据按照顺序全加进去。而第一个方法就是一列一列的辅助,那样的话 就比较麻烦。dt.Rows.Add(new object[] { null, "Tang", "W", "25", "50" });这里第一个值赋值的是NULL 是因为这是一个自动添加列 所以要赋值为NULL

 

#region 方法三: 
DataTable table =new DataTable(); 
//创建table的第一列 
DataColumn priceColumn =new DataColumn(); 
priceColumn.DataType = System.Type.GetType("System.Decimal");//该列的数据类型 
priceColumn.ColumnName ="price";//该列得名称 
priceColumn.DefaultValue =50;//该列得默认值 
// 创建table的第二列 
DataColumn taxColumn =new DataColumn(); 
taxColumn.DataType = System.Type.GetType("System.Decimal"); 
taxColumn.ColumnName ="tax";//列名 
taxColumn.Expression ="price * 0.0862";//设置该列得表达式,用于计算列中的值或创建聚合列 
// 创建table的第三列 
DataColumn totalColumn =new DataColumn(); 
totalColumn.DataType = System.Type.GetType("System.Decimal"); 
totalColumn.ColumnName ="total"; 
totalColumn.Expression ="price + tax";//该列的表达式,是第一列和第二列值得和 
// 将所有的列添加到table上 
table.Columns.Add(priceColumn); 
table.Columns.Add(taxColumn); 
table.Columns.Add(totalColumn); 
//创建一行 
DataRow row = table.NewRow(); 
table.Rows.Add(row);//将此行添加到table中 

这个方法相对来说用的比较少,但是也很有用,比如 我从DB 中选取到一个字段,当我绑定到页面的时候,我添加几个字段(百分比,总和)就可以在Table中添加一个列 totalColumn.Expression ="price + tax"; 用这种方法去计算。

 

操作Table中的数据当然会用到 Select 方法了。下面就说说 这个方法。

Select方法

 首先select这个方法,一共有四个重载的函数

1:Select()

2:Select(string filterExpression)

3:Select(string filterExpression, string sort)

4:Select(string filterExpression,string sort, DataViewRowState record States)。

说白了,用这个方法只需要了解这几个参数是什么意思 就没有什么大问题了。那就一个一个来

1:select()

这个没参数,就没得说了。就是把DataTable中的数据都选出来。但要注意的是,select方法选出的都是DataRow 对象的数组。这个没有参数的使用的相对来说比较少。

2:Select(string filterExpression) 

这个filterExpression 就是一个表达式。这个就要研究一下了。表达式支持“and, Like, or”

比如

Select("id>=‘3‘ and name=‘hello‘"); (选出id这个字段大于等于3并且name 等于“hello”的数据)           

Select("id>=‘3‘ or id=‘1‘"); (选出id大于等于3 或者id等于1的数据)        

Select("name like ‘%hello%‘");(选出name用hello的数据)
  

操作DataTable中的数据

标签:

原文地址:http://www.cnblogs.com/loveLu/p/5581413.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!