zoukankan      html  css  js  c++  java
  • DataTable的Compute方法的应用

    项目中遇到计算平均值、标准偏差、平均值+标准偏差、平均值+2倍标准偏差、平均值+3倍标准偏差、平均值-标准偏差、平均值-2倍标准偏差、平均值-3倍标准偏差,要求提取出共用的方法(数据源可以是excel、csv、文本文件等),为此,想到取出数据再计算相应内容.

    public object Compute(string expression,string filter)

    expression:要计算的表达式,参数需要时聚合函数。
    filter:要限制在表达式中进行计算的行的筛选器
    object:计算结果
    举例如下:
    例子
     1     using (OracleConnection con = new OracleConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString()))
     2             {
     3                 con.Open();
     4                 OracleCommand cmd = con.CreateCommand();
     5                 cmd.CommandText = "SELECT * FROM EMP";
     6                 OracleDataAdapter oda = new OracleDataAdapter(cmd);
     7                 DataSet ds = new DataSet();
     8                 oda.Fill(ds);
     9                 DataTable dt = ds.Tables[0];
    10                 //求和
    11                 string sum = Math.Round(Convert.ToDouble(dt.Compute("sum(sal)", "")), 2).ToString();
    12                 //求平均
    13                 string avg = Math.Round(Convert.ToDouble(dt.Compute("avg(sal)", "")), 2).ToString();
    14                 //具有筛选条件 求和
    15                 string sumFilter = Math.Round(Convert.ToDouble(dt.Compute("sum(sal)", "SAL<3000")), 2).ToString();
    16                 //具有筛选条件 求平均
    17                 string avgFilter = Math.Round(Convert.ToDouble(dt.Compute("avg(sal)", "SAL<3000")), 2).ToString();
    18                 //标准偏差
    19                 string stDev = Math.Round(Convert.ToDouble(dt.Compute("stdev(sal)", "")), 2).ToString();
    20                 //具有筛选条件标准偏差
    21                 string stDevFilter = Math.Round(Convert.ToDouble(dt.Compute("stdev(sal)", "sal<3000")), 2).ToString();
    22                 //最小值
    23                 string min = dt.Compute("min(sal)", "").ToString();
    24                 //具有筛选条件的最小值
    25                 string minFiter = dt.Compute("min(sal)", "sal<3000").ToString();
    26                 //平均值+标准偏差
    27                 string avgStDev = Math.Round(Convert.ToDouble(dt.Compute("avg(sal)+stdev(sal)", "")), 2).ToString();
    28                 dt.Columns.Add("cl", typeof(string),"len(ename)");
    29                 StringBuilder sb = new StringBuilder();
    30                 sb.Append("求和:" + sum + "<br/>");
    31                 sb.Append("求平均:" + avg + "<br/>");
    32                 sb.Append("标准偏差:" + stDev + "<br/>");
    33                 sb.Append("最小值:" + min + "<br/>");
    34                 sb.Append("具有筛选条件求和:"+sumFilter+"<br/>");
    35                 sb.Append("具有筛选条件求平均:"+avgFilter+"<br/>");
    36                 sb.Append("具有筛选条件标准偏差:"+stDevFilter+"<br/>");
    37                 sb.Append("具有筛选条件的最小值:"+minFiter+"<br/>");
    38                 sb.Append("平均值+标准偏差:"+avgStDev+"<br/>");
    39                 lbShow.Text = sb.ToString();
    40             }
     
  • 相关阅读:
    windows 1061
    Golang 编程思维和工程实战
    Apache Tomcat jar Catalina
    MySQL Client/Server Protocol mysql协议
    蚂蚁集团万级规模 k8s 集群 etcd 高可用建设之路
    实习生系列之找实习的途径
    Yahoo!网站性能最佳体验的34条黄金守则
    onselectstart="return false"无法复制文字
    VS2008开发环境中容易遇到的3个问题之解决办法
    实践与交流:“三保险”为世界顶级安全防范软件ESET Nod32 4.0的正常使用“保驾护航”
  • 原文地址:https://www.cnblogs.com/hfliyi/p/2851944.html
Copyright © 2011-2022 走看看