操作DataTable中的数据

在项目中,经常会遇到这样的问题。用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的数据)

时间: 2024-12-25 11:19:15

操作DataTable中的数据的相关文章

.Net多个DataTable合并,及过滤掉DataTable中重复数据行

DataTable dt01= new DataTable(); DataTable dt02= new DataTable(); DataTable dtRs = new DataTable(); dt01=sqlHelper.GetDataTable(strSQL001) dt02=sqlHelper.GetDataTable(strSQL002) //数据表dt02与dt01合并 dt01.Merge(dt02); //多个表合并可能产生重复数据,过滤掉重复数据 DataView dv =

使用SqlBulkCopy将DataTable中的数据批量插入数据库中

#region 使用SqlBulkCopy将DataTable中的数据批量插入数据库中 /// <summary> /// 注意:DataTable中的列需要与数据库表中的列完全一致. /// </summary> /// <param name="conStr">数据库连接串</param> /// <param name="strTableName">数据库中对应的表名</param> //

怎样简单灵活地将DataTable中的数据赋值给model

最近在做的一个项目中,有13个方法都需要用到同一种处理方式:通过SQL语句从数据库获取一条指定的数据,并将该数据中的每个值都赋值给一个model,再将这个model中的数据通过微信发送出去.每个方法都会从不同的表中获取数据,需要处理的数据完全不同,因此也对应了13个不同的model.这些model中的每个属性名称是已经给定的,需要将它们post出去,使用微信给定的模板发送消息,因此每个属性的名称必须与微信提供的模板中一致. 下面举个简单的例子来说明当前的情况: SQL Server中用来存放数据

DataTable中的数据赋值给model z

create table memberinfo ( member_id int, member_name varchar(20), member_birthday varchar(50) ) go /// <summary> /// 微信消息中的参数 /// </summary> public class wechatouputpara { private String _name = ""; /// <summary> /// 会员姓名 /// &

MapReduce 读取和操作HBase中的数据

MapReduce 中如何处理HBase中的数据?如何读取HBase数据给Map?如何将结果存储到HBase中? 2012-07-05 13:40 89人阅读 评论(0) 收藏 举报 MapReduce 中如何处理HBase中的数据?如何读取HBase数据给Map?如何将结果存储到HBase中? Mapper类:包括一个内部类(Context)和四个方法(setup,map,cleanup,run):          setup,cleanup用于管理Mapper生命周期中的资源.setup

如何从一个DataTable中复制数据行到另一个DataTable中

DataTable dt = ""; //这里是填充DataTable数据 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的数据表 现在需要的只是其中的一

使用LinQ To Object把数组或DataTable中的数据进行向上汇总

来自森大科技官方博客http://www.cnsendblog.com/index.php/?p=215GPS平台.网站建设.软件开发.系统运维,找森大网络科技!http://cnsendnet.taobao.com 最近搞造价系统时遇到一些需要汇总的指标数据 类似下面的结构 指标A     1000    指标B    500    指标C    500 指标A = B+C 当我们需要对这些数值进行校验时,实现的方法有很多种,数据库里写存储过程去更新每行数据, 或者我们在程序中遍历等等,但用起

C#中,当从数据库中查询到数据,以DataTable类型返回后,如果需要对DataTable中的数据进行筛选,可以选择下面的方式

DataRow[] dr = _deptCodeDt.Select(string.Format(" ward_code = '{0}'", LocalSetting.WardCode)); if (dr.Length <= 0) return; DataTable tempT = new DataTable(); tempT = dr[0].Table.Clone(); //克隆表结构 DataSet tempDs = new DataSet(); tempDs.Tables.A

将DataTable中的数据导出到Excel

1 public static void Export(System.Data.DataTable dt,NPOI.HSSF.UserModel.HSSFWorkbook workbook,string FilePath) 2 { 3 if(dt.Rows.Count == 0) 4 { 5 System.Windows.MessageBox.Show("尚未读取到任何数据"); 6 return; 7 } 8 ISheet sheet = workbook.CreateSheet(&