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

【实例应用】DATATable那些事儿

时间:2015-01-25 18:20:30      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:应用   实例   

      这几天做成绩分析,天天跟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那些事儿

标签:应用   实例   

原文地址:http://blog.csdn.net/u010924897/article/details/43112675

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