首页 > 代码库 > 【实例应用】DATATable那些事儿
【实例应用】DATATable那些事儿
这几天做成绩分析,天天跟DataTable混在一起,应用了其众多属性和方法。今天,就来八一八DataTable那些常用的方法。
一、去除重复行的操作
在项目中,经常会对表进行固定列的去重操作,此方法就是去除PaperID和PaperName的重复行,并返回这两列:
DataTable dtOld = DataTable(); //… DataView myDataView = new DataView(dtOld);//去掉重复行的DataView,dtOld为需要转换的表 DataTable dtDistinct = myDataView.ToTable(true, new string[] { "PaperID", "PaperName" }); //DataView的ToTable(true,字段)方法是去掉重复的数据 //第一个参数,true 去除重复,false 不去除 //第二个参数, 需要显示并去重的字段,这里用的paperID和PaperName
二、合并两个结构相同的表
dtOld,dtNew分别是两个结构相同的非空表,把两个表合并成一个表为:
//Merge dtOld into dtNew dtNew.Merge(dtOld);
三、DataTable进行数据统计
我们可以轻松的使用SQL Sever进行数据统计,同样,也可以对检索出来的DataTable进行数据统计,我们可以通过函数Compute进行统计。
1、函数说明
public object Compute(string strExpression,string strFilter);
strExpression:要计算的表达式字符串,基本上类似于Sql Server中的统计表达式。
strFilter:统计的过滤字符串,只有满足这个过滤条件的记录才会被统计。
2、实例
假设得到如下表dtSport:
1)统计所有得分为零的数量:
object n=dtSport.Compute("count(ID)","Score=0");
2)统计各项的平均得分
decimal averScore=Convert.ToDecimal(dtSport.Compute("avg(Score)","true"));
3)所有项目的总分
int intAll = Convert.ToInt32(dtSport.Compute("sum(Score)","true"));
四、动态筛选信息并添加到新表中
已知datatable表dtSport(如上图),在此以筛选得分大于2分的记录为例:
DataTable dtFilter = new DataTable(); dtFilter = dtSport.Clone(); //得到数据结构和dtSport相同的表 //dtSport.Copy(); 得到和dtSport相同的表 for (int i = 0; i < dtSport.Rows.Count; i++) { DataRow[] dr = dtSport.Select("Score>'2' "); if (dr != null && dr.Length > 0) { //显示有记录 dtFilter.ImportRow(dr[0]); //得到满足条件的datatable dtFilter } }
DataTable还有许多常用的方法,在此就不一一举例了,熟练的掌握这些方法,能让我们更快更好的完成学习任务,在实践中慢慢积累吧。
【实例应用】DATATable那些事儿