转:DataTable的Compute方法的应用
转自:http://www.cnblogs.com/hfliyi/archive/2013/01/08/2851944.html
项目中遇到计算平均值、标准偏差、平均值+标准偏差、平均值+2倍标准偏差、平均值+3倍标准偏差、平均值-标准偏差、平均值-2倍标准偏差、平均值-3倍标准偏差,要求提取出共用的方法(数据源可以是excel、csv、文本文件等),为此,想到取出数据再计算相应内容.
public object Compute(string expression,string filter)
- expression:要计算的表达式,参数需要时聚合函数。
- filter:要限制在表达式中进行计算的行的筛选器
- object:计算结果
- 举例如下:
例子
using (OracleConnection con = new OracleConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString()))
{
con.Open();
OracleCommand cmd = con.CreateCommand();
cmd.CommandText = "SELECT * FROM EMP";
OracleDataAdapter oda = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
oda.Fill(ds);
DataTable dt = ds.Tables[];
//求和
string sum = Math.Round(Convert.ToDouble(dt.Compute("sum(sal)", "")), ).ToString();
//求平均
string avg = Math.Round(Convert.ToDouble(dt.Compute("avg(sal)", "")), ).ToString();
//具有筛选条件 求和
string sumFilter = Math.Round(Convert.ToDouble(dt.Compute("sum(sal)", "SAL<3000")), ).ToString();
//具有筛选条件 求平均
string avgFilter = Math.Round(Convert.ToDouble(dt.Compute("avg(sal)", "SAL<3000")), ).ToString();
//标准偏差
string stDev = Math.Round(Convert.ToDouble(dt.Compute("stdev(sal)", "")), ).ToString();
//具有筛选条件标准偏差
string stDevFilter = Math.Round(Convert.ToDouble(dt.Compute("stdev(sal)", "sal<3000")), ).ToString();
//最小值
string min = dt.Compute("min(sal)", "").ToString();
//具有筛选条件的最小值
string minFiter = dt.Compute("min(sal)", "sal<3000").ToString();
//平均值+标准偏差
string avgStDev = Math.Round(Convert.ToDouble(dt.Compute("avg(sal)+stdev(sal)", "")), ).ToString();
dt.Columns.Add("cl", typeof(string),"len(ename)");
StringBuilder sb = new StringBuilder();
sb.Append("求和:" + sum + "<br/>");
sb.Append("求平均:" + avg + "<br/>");
sb.Append("标准偏差:" + stDev + "<br/>");
sb.Append("最小值:" + min + "<br/>");
sb.Append("具有筛选条件求和:"+sumFilter+"<br/>");
sb.Append("具有筛选条件求平均:"+avgFilter+"<br/>");
sb.Append("具有筛选条件标准偏差:"+stDevFilter+"<br/>");
sb.Append("具有筛选条件的最小值:"+minFiter+"<br/>");
sb.Append("平均值+标准偏差:"+avgStDev+"<br/>");
lbShow.Text = sb.ToString();
}同时 dataset同样适用:dataset ds=new dataset(); ds.tables[0].compute(string,string);
转:DataTable的Compute方法的应用的更多相关文章
- [datatable]借助DataTable的Compute方法
借助DataTable的Compute方法,DataTable中数据不用事先排好序. 下面代码中的dt是跟前面的是一样的 DataTable dtName = dt.DefaultView.ToTab ...
- c# 基于DataTable的Compute方法的扩展
DataTable.Compute(String, String) 方法 定义 命名空间:System.Data 程序集:System.Data.dll, netstandard.dll, Syste ...
- C# DataTable Compute方法的使用
在开发中需要对DataTable的数据进行处理,比如累加,求最大最小及平均值等,以前都采用手工对DataTable进行循环并计算的方式,现在发现DataTable的Compute方法可以轻松实现这些功 ...
- C#中DataTable中的Compute方法使用收集
原文: C#中DataTable中的Compute方法使用收集 Compute函数的参数就两个:Expression,和Filter. Expresstion是计算表达式,关于Expression的详 ...
- 转载 C#中DataTable中的Compute方法使用收集
原文: C#中DataTable中的Compute方法使用收集 Compute函数的参数就两个:Expression,和Filter. Expresstion是计算表达式,关于Expression的详 ...
- C#DataTable 使用GroupBy方法的lamda 表达式和Linq语句写法
https://www.cnblogs.com/johnblogs/p/6006867.html DataTable ds = new DataTable(); //1.lamda 表达式写法(推荐) ...
- C#DataTable一些使用方法
C#DataTable一些使用方法 1,使用DataTable必须要引用System.Data. 2,定义一个DataTable DataTable dt=new DataTable(); 3,为 ...
- 靠谱的datatable转json方法
今天有之前同事问我要datatable转json的方法,以前自己也弄过,但感觉网上有很多不靠谱的方法.所以自己在博客里记录一个,当然也是网上找的,但是这个靠谱一点,起码可以用不会报错,所以叫他靠谱的d ...
- C# DataTable的Select()方法不支持 != 判断
异常描述: 用户代码未处理 System.Data.SyntaxErrorException HResult=-2146232032 Message=无法解释位置 23 的标记“!”. Source= ...
随机推荐
- .net中自定义过滤器对Response内容进行处理
原文:http://www.cnblogs.com/zgqys1980/archive/2008/09/02/1281895.html 代码DEMO:http://files.cnblogs.com/ ...
- LINUX下的拨号利器:wvdial和pppd —— 转载
wvdial是LINUX下的智能化拨号工具,利用wvdial和ppp可以实现linux下的轻松上网.在整个过程中wvdial的作用是拨号并等待提示,并根据提示输入相应的用户名和密码等认证信息:ppp的 ...
- 如何让我们的VMware虚拟机上网——转载
一.必须检查你的windows系统的VMware DHCP Service 和VMware NAT Service这个两个服务是否启动.如果未启动请启动. 1,在开始windows里面输入servic ...
- (转) Lua使用心得一 LUA和VC整合
这几天研究了一下lua,主要关注的是lua和vc之间的整合,把代码都写好放在VC宿主程序里,然后在lua里调用宿主程序的这些代码(或者叫接口.组件,随便你怎么叫),希望能用脚本来控制主程序的行为.这实 ...
- js 验证码 倒计时60秒
js 验证码 倒计时60秒 <input type="button" id="btn" value="免费获取验证码" /> & ...
- python之优雅处理套接字错误
#!/usr/local/bin/python3.5 #coding:utf-8 import sys import socket import argparse def main(): #setup ...
- 开源PLM软件Aras详解四 ItemType的概念
首先,我们需要了解什么是ItemType,俗称对象类 官方一点就是ItemType是一个用来定义业务对象类的业务对象类 通过ItemType定义的每个业务对象类可以产生各自的实例对象 通过ItemTy ...
- Hdu OJ 5113 Black And White (2014ACM/ICPC亚洲区北京站) (搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5113 题目大意:有k种颜色的方块,每种颜色有ai个, 现在有n*m的矩阵, 问这k种颜色的方块能否使任 ...
- iptables配置允许vpnserver(softether vpn)
防火墙配置 -A INPUT -p udp -m multiport --dport ,,,, -j ACCEPT
- 程序员遇到Bug时的25个反应
开发应用程序是一个非常有压力的工作.没有人是完美的,因此在这个行业中,代码中出现bug是相当普遍的现象.面对bug,一些程序员会生气,会沮丧,会心烦意乱,甚至会灰心丧气,而另一些程序员会依然保持冷静沉 ...