【实例应用】DATATable那些事儿

本文介绍了在项目中使用DataTable进行数据处理的一些常见操作,包括去除特定列的重复行,合并两个结构相同的表,以及利用Compute函数进行数据统计。提供了具体的代码实例,如统计得分等于零的记录数量、平均得分和总分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      这几天做成绩分析,天天跟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还有许多常用的方法,在此就不一一举例了,熟练的掌握这些方法,能让我们更快更好的完成学习任务,在实践中慢慢积累吧。

 





   

评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值