转: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= ...
随机推荐
- mysql的从头到脚优化之数据库引擎的选择(转载)
一. Mysql常用的存储引擎包括Innodb和Myisam以及memory引擎,但是最常用的莫过于Innodb引擎和MyISAM引擎,下边分别做下记录和比较: 下面思考下这几个问题: 你的数据库需要 ...
- C# 接口应用及意义
写在前面:新手入行,读者勉强看看吧,写的不对的欢迎讨论,板砖轻拍! 一.定义 接口描述的是可属于任何类或结构的一组相关功能,所以实现接口的类或结构必须实现接口定义中指定的接口成员. 通常用Interf ...
- 第一零三天上课 PHP TP框架下控制器的方法分离
(1)配置信息 修改配置文件->Config.php (配置后,原先的控制方法无效) 'ACTION_BIND_CLASS' => TRUE, // 控制器方法分离 (2)在Control ...
- tomcat7.0 处理问题
修改tomcat的用户密码 打开tomcat的conf/tomcat-users.xml 将<user username="admin" password="123 ...
- IconFont字体制作
1. 第一步.准备svg格式图片 2. 登陆http://iconfont.cn/网站,上传图标. 3. 选中需要制作成iconfont的图标. 4. 将选中的图标转储为项目 5. 下载至本地. 6. ...
- 数据库中int类型存在空数据开发过程中model和dal层处理方法
model层 public Int32? IsFullAttendance { get; set; } dal层 if (dr["IsFullAttendance"] + &qu ...
- VC++ WINDOWS自定义消息范围
WINDOWS自定义消息WM_USER和WM_APP WM_USER常量是Windows帮助应用程序定义私有窗口类里的私有消息,通常使用WM_USER+一个整数值,但总值不能超过0x7FFF(十进制: ...
- Docker上运行dotnet core
下载microsoft/dotnet镜像 运行命令: docker pull microsoft/dotnet 如果没有使用阿里镜像加速的,参照这篇先配置好再跑上面命令: http://www.cnb ...
- linux中的开机和关机命令
与关机.重新启动相关的命令 * 将数据同步写入硬盘中的命令 sync * 惯用的关机命令 shutdown * 重新启动.关机 reboot halt poweroff sync 强制将内存中的 ...
- Errors occurred during the build. Errors running builder 'JavaScript Validator' on project 'XXX'.
Errors occurred during the build. Errors running builder 'JavaScript Validator' on project 'XXX'. ...