转: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= ...
随机推荐
- avalon2的后端渲染实践
avalon2为了提高性能,采用全新的架构,四层架构,其中一层为虚拟DOM. 虚拟DOM的一个好处是能大大提高性能,另一个好处是能过错整描述我们的页面结构.因此在非浏览器环境下,虚拟DOM也能正常运行 ...
- java length size
1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性. 2 java中的length()方法是针对字符串String说的,如果想看这 ...
- Kernel Logestic Regression
一.把 soft margin svm 看做 L2 Regression 模型 先来一张图回顾一下之前都学了些什么: 之前我们是通过拉格朗日乘子法来进行soft Margin Svm的转化问题,现在换 ...
- Android permission
1. users-permission Users-permission is the permission that this app should acquire, so that the app ...
- CommonUtils
package com.utils; import java.lang.reflect.Field; import java.math.BigDecimal; import java.sql.Time ...
- HTML5和CSS3基础教程(第8版)-读书笔记
第1章 网页的构造块 一个网页主要包括以下三个部分: n 文本内容(text content):在页面上让访问者了解页面内容的纯文字. n 对其他文件的引用(referen ...
- ELK日志管理之——elasticsearch部署
1.配置官方yum源 [root@localhost ~]# rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch ...
- [刘阳Java]_Java程序员的成长路线_第3讲
按照Java从业人员的职位晋升来说,Java程序成长路线大致如下 Java程序员 JavaEE初级软件工程师 JavaEE中级软件工程师 JavaEE高级软件工程师 Java架构师 按照职业发展方向, ...
- Android--多线程之Handler(转)
前言 Android的消息传递机制是另外一种形式的“事件处理”,这种机制主要是为了解决Android应用中多线程的问题,在Android中不 允许Activity新启动的线程访问该Activity里的 ...
- WPF 获得鼠标相对于屏幕的位置,相对于控件的位置
相对于屏幕的位置 第一步: /// <summary> /// 用于获得鼠标相对于屏幕的位置 /// </summary> public class Win3 ...