`

DataTable中数据记录的统计

阅读更多

DataTable中数据记录的统计
我们在使用Sql Server这些数据库时,可以轻松的通过Sum、Aver、Count等统计出相关结果,那么,在已经把数据检索出来的DataSet(DataTable)中呢?特别是通过Web Service获得了DataSet,这个时候,可是没有办法回头去修改Select语句来获取这些统计了。那么在DataSet/DataTable中是否可以进行统计呢?答案是肯定的。


 
  在MSDN中,有一篇MS推荐的统计方法,就是逐行对数据进行求和统计,这个方法,其实有等于无(或许这个方法只是针对于DataGrid求取小计用吧),因为这个方法中采用的是DataGrid的ItemDataBind事件来对数据进行累加,同我们手动写代码统计没有什么区别。
  
  本文介绍一个简单的方法,不需要逐条记录进行计算就可以轻松的获得DataTable中的记录统计结果。这个简单的方法就是调用功能强大的DataTable的函数Compute。
  
  一、调用说明(仅以C#为例,下同):
  
  public object Compute(string strExpression,string strFilter)
  
  参数:
  
  strExpression:要计算的表达式字符串,基本上类似于Sql Server中的统计表达式
  
  strFilter:统计的过滤字符串,只有满足这个过滤条件的记录才会被统计
  
  二、调用举例:
  
  以下示例,假设一个产品销售表table,描述某商场中各促销员销售的实际记录,包含字段为:姓名(Name)、性别(Sex,0为女,1为男)、生日(Birthday)、销售产品的代码(ProID)、销售的数量(Quantity)、销售价格(Price)。
  
  1.统计所有性别为女的销售员的数量:
  table.Compute(Count(*),Sex=0);
  
  2.统计所有销售员中年龄大于20岁的
  table.Compute(Count(*),Birthday<'+today);//today为今天的日期字符串
  
  3.统计销售产品的平均价格
  table.Compute(Aver(Price),true);
  
  4.统计产品代码为1的产品销售数量:
  table.Compute(Sum(Quantity),ProID=1);
  
  5.统计所有产品的销售总金额:
  要统计总销售金额,由于table中不存在某项产品某个促销员销售的金额数据,但我们可以通过Quantity*Price来获得。比如:
  table.Compute(Sum(Quantity*Price),true);
  
  这里一个问题是:DataTable的统计功能没有SqlServer强,这个统计是错误的,因为Compute的统计不具备Sum(Quantity*Price)这样数据的功能。那怎么办呢?
  
  对于这样复杂数据的统计,我们可以在DataTable中创建一个新的字段来完成,比如Amount,同时设置该字段的Expression为Quantity*Price,这样我们就可以使用统计功能了:
  table.Compute(Sum(Amount),true);

 
 
 

分享到:
评论

相关推荐

    Asp.net 高级编程学习经验

    36.DataTable中数据记录的统计 37.合并两个结构一样的DataTable 38.在DataTable中排序 39.将数据写入excel中,从excel读取数据 40.页眉模板列隐藏GridView控件的行 41.泛型与类结合使用来绑定数据,并添加到数据...

    C#开发经验技巧宝典

    0963 获取SQL Server的连接统计数据 563 0964 如何调用SQL Server存储过程 563 0965 如何生成SQL数据库脚本 564 0966 SQL Server 2000无法安装的解决办法 565 20.3 其他 565 0967 如何判断记录是否为NULL...

    [C#]统计在线人数

    //数据表中是否有我的记录 DataRow drFind = dtOnline.Rows.Find(sessionId); if(drFind != null) { //有;更新我的状态 Info.Write("更新"); drFind["LastActiveTime"] = DateTime.Now; drFind["UserWhere...

    asp.net专家疑难解答200问源码

    128.如何把数据库中的数据以Excel文件的格式在显示浏览器中 129.如何给DataGrid控件添加个标题并实现分类显示 130.如何实现DataGrid控件中DropDownList控件的联动 131.DataGrid控件使用综合举例 第7章 数据绑定...

    ASP.NET 2.0+SQL Server 2005全程指南-源代码

    7.3.5 对数据进行分组统计 7.3.6 嵌套查询 7.3.7 插入记录并返回ID 7.3.8 同时更新多条记录 7.3.9 根据条件删除记录 7.4 存储过程 7.4.1 使用存储过程添加数据 7.4.2 使用存储过程查询数据 7.4.3 使用存储...

    asp.net专家疑难解答200问

    如何把数据库中的数据以Excel文件的格式在显示浏览器中 129.如何给DataGrid控件添加个标题并实现分类显示 130.如何实现DataGrid控件中DropDownList控件的联动 131.DataGrid控件使用综合举例 第7章 ...

    JAVA上百实例源码以及开源项目源代码

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

    asp.net知识库

    与DotNet数据对象结合的自定义数据对象设计 (二) 数据集合与DataTable 与DotNet数据对象结合的自定义数据对象设计 (一) 数据对象与DataRow ASP.NET中大结果集的分页[翻译] .net 2.0 访问Oracle --与Sql Server的...

    C#编程经验技巧宝典

    54 &lt;br&gt;0075 用回溯法找出n个自然数中取r个数的全排列 55 &lt;br&gt;0076 约瑟夫环问题 56 &lt;br&gt;0077 猴子选大王 57 &lt;br&gt;0078 如何判断IP是否正确 57 &lt;br&gt;0079 如何将小写金额转换为大写金额 57...

    AppFramework_V1.0

    1.1 引言 约有90%的企业信息化管理系统基于数据库实现,这类系统中又有超过30%的代码集中在数据访问层负责业务数据存取。除了实现数据的增删改查,数据访问层还要提供一些与业务无关功能,例如面向对象的持久化与...

    AppFramework_V1.0_New

    =========== 软件说明: 1.1 引言 约有90%的企业信息化管理系统基于数据库实现,这类系统中又有超过30%的代码集中在数据访问层负责业务数据存取。除了实现数据的增删改查,数据访问层还要提供一些与...

    AppFramework数据库访问组件_代码生成插件_V1.1.rar

    =========== 软件说明: 1.1 引言 约有90%的企业信息化管理系统基于数据库实现,这类系统中又有超过30%的代码集中在数据访问层负责业务数据存取。除了实现数据的增删改查,数据访问层还要提供一些与...

    C#基类库(苏飞版)

    导出到文件,导出一部分集合,从DataTable中操作等 ExportExcel 主要功能如下1.将整个网页导出来Excel 2.将GridView数据导出Excel GridViewExport 主要功能:将整GridView的数据导出到Excel中关增加一个效果线做...

    JAVA上百实例源码以及开源项目

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

Global site tag (gtag.js) - Google Analytics