DataTable.Compute具有这么多的功能

1:聚合函数”Sum()”

2:自由计算表达式“20*30+1”

3:bool表达式“1=2”

4:IFF逻辑表达式” IIF(20>1000, 0, 1)” //还支持IsNull,Trim,SubString等

一个小应用:让DataTable模拟Excel的Formula功能。

Excel中的Formula功能强大,如果能让DataTable有类似的功能就好了。大部分事件DataTable只是用作数据载体,其实很少用它做计算。DataTable提供的函数Compute就提供了功能强大的计算功能。

Compute函数的参数就两个:Expression,和Filter。

Expresstion是计算表达式,关于Expression的详细内容请看这里“http://msdn2.microsoft.com/zh-cn/library/system.data.datacolumn.expression(VS.80).aspx”。而Filter则是条件过滤器,类似sql的Where条件。

1: 这里详细介绍的就是Expresstion

先看最简单的用法,使用聚合函数。这个聚合函数就是报表或者Excel中常用的函数,比如Sum,Avg等等。对于数据列,Datatable可以方便的进行计算,比如DataTable.Cumpute(“Sum(列1)”,”列1>0”); 对于简单的统计功能,这些函数就足够用了。(其他提供的函数有min,max,count,求方差,标准偏差等等)。这个功能常用,倒也不奇怪。

再看“自由表达式”计算。把数学计算表达式写成字符串,然后直接投入Compute函数计算,就可以得到计算结果。这样,动态生成的计算表达式就可以计算出来了。比方说要计算“列1×30+20+2”或者是纯粹的数学计算。

出了计算出具体的结果,Compute函数还能进行逻辑计算。比方说这个表达式就能返回false:Compute(“1=2”,”true”); 这个的用法可能想上边的情形差不多,在自由组装一些条件的时候可以得到结果。

在Excel中,还经常用到的就是LogicTest功能了,可以指定一些逻辑表达式,比如这样的:“IF(20>1000, 0, 1)”。而这个功能要是放到DataTable中该如何实现呢?也是用Compute,这样写就可以了:“IIF(20>1000, 0, 1)”。

在DataTable里面如果实现“IF(C102=0,0,C105/C102*30)”就用上边的这些技术点就可以了。

2:至于第二个参数Filter,就是一个简单的查询条件。比如,”true”, “Id>4”, “Name like ’%nd’ and sex=’male’”.

条件不可能很复杂,这些已经比较够用了。

以前用过的Marge什么的也不错,还可以作内连接,在数据量小,需要简单计算的情况下,这些功能很有用。

当然,如果逻辑极其复杂,DT的这点功能就不够了,还是得自己写逻辑(即使要实现“IF(C102=0,0,C105/C102*30)”,也是要自己写一点处理逻辑的,不过比较通用,写一次就好了)。

DataTable.Compute功能相关推荐

  1. C# DataTable Compute方法的使用

    在开发中需要对DataTable的数据进行处理,比如累加,求最大最小及平均值等,以前都采用手工对DataTable进行循环并计算的方式,现在发现DataTable的Compute方法可以轻松实现这些功 ...

  2. Uipath DataTable Activities功能中文描述

    学习目标 了解 Uipath DataTable Activities 功能 Uipath DataTable Activities 功能描述 Build Data Table 用于使用专用窗口创建数 ...

  3. DataTable的Compute功能详解

    在为筛选器创建表达式时,用单引号将字符串括起来: "LastName = 'Jones'" 下面的字符是特殊字符,如下面所解释的,如果它们用于列名称中,就必须进行转义: \n (n ...

  4. webform计算某几列结果_利用DataTable.Compute等方法和属性做各种统计(某一列的总和sum、不重复的某列记录数distinct)...

    对应sql语句 select UserID, UserName, UserMoney from Users 从数据库里利用SqlDataAdapter读取出DataSet的方法不写了,这个好简单,写统 ...

  5. ADO.NET 2.0 Dataset和Datatable 新功能新特性

    1.新的索引引擎更快的执行效率    下面这段代码在2003中需要157秒,在2005中只要11秒就可以完成: DataSet ds = new DataSet(); ds.Tables.Add(&q ...

  6. 媲美Pandas?一文入门Python的Datatable操作

    作者 | Parul Pandey 译者 | linstancy 责编 | Jane 出品 | Python大本营(id:pythonnews) [导读]工具包 datatable 的功能特征与 Pa ...

  7. Datatable中对某列求和,三种不同情况下的方法 .

    C# code 方法一. object sumObject = DataTable.Compute("sum(Qty)", "TRUE"); 直接对数据表中的字 ...

  8. 对DataTable的一些解释

    最经做导入导出Excel时,经常操作DataTable,DataSet,就按自己的需求对他们的一些常用的东西进行了一下总结. 一.DataTable简介 (1)构造函数            Data ...

  9. C# DataTable 用法

    1.创建DataTable DataTable dataTable = new DataTable(); //创建一个空表 2.创建DataRow DataRow row = dataTable.Ne ...

最新文章

  1. 通过tushare获取贵州茅台和中国平安历史交易数据并使用plotly进行可视化分析
  2. vs发生生成错误_S7报告系统错误:
  3. AfxBeginThread的介绍/基本用法和Window多线程使用详解
  4. 设计模式:组合模式(Composite Pattern)
  5. .NET Core + Kubernetes:StatefulSet
  6. “约见”面试官系列之常见面试题之第九十九篇之router的钩子函数(建议收藏)
  7. 对口升学考试计算机应用知识点,湖南省对口升学考试计算机应用类试题含参考答案...
  8. js获取时间(本周、本季度、本月..)
  9. iOS xcode ‘XXXX’ was compiled with optimization - stepping may behave oddly; variables may not be av
  10. 使用ntp协议同步时间,chronyc sources -v 同步时间
  11. paip.汉字简化大法总结
  12. 利用遗传算法解决TSP问题
  13. python-selenium  自动化弹幕
  14. 为什么大多数程序员没有工程思维
  15. 74HC573芯片介绍
  16. 完美实现无限饿了么分销的方法——无感预先生成绑定渠道ID
  17. python ssologin_Python sso
  18. 电脑桌面云便签怎么设置锁屏密码?
  19. gfp 通用成帧程序 帧结构 校验 crc 多项式 加扰
  20. Pytorch 正则化方法(权重衰减和Dropout)

热门文章

  1. Java设计模式(2 / 23):观察者模式
  2. 天线下倾角示意图_常用天线和无源器件技术参数汇总
  3. 安卓牛客专项练习2020.12.10
  4. 13个好习惯 教你健康一整年
  5. 给手机浏览器减负 轻装上阵才能速度制胜
  6. axios中出现两次请求,OPTIONS请求和GET请求
  7. Linux网卡命名规则
  8. android studio : clang++.exe: error: invalid linker name in argument '-fuse-ld=bfd
  9. LeetCode-----翻转二叉树
  10. third day- 01--文件操作