c# 基于DataTable的Compute方法的扩展
DataTable.Compute(String, String) 方法
计算用来传递筛选条件的当前行上的给定表达式。
定义
- 命名空间:System.Data
- 程序集:System.Data.dll, netstandard.dll, System.Data.Common.dll
https://docs.microsoft.com/zh-cn/dotnet/api/system.data.datatable.compute?view=netframework-4.8
Compute函数的参数就两个:Expression,和Filter。
Expresstion是计算表达式,关于Expression的详细内容请看这里https://docs.microsoft.com/zh-cn/dotnet/api/system.data.datacolumn.expression?view=netframework-4.8。
或者参考转载的 C#中DataTable中的Compute方法使用收集
Filter则是条件过滤器,类似sql的Where条件。
基于以上信息,扩展DataTable类。
可以直接使用
DataTable dt=new Datable();
dt.GetMinValue(“列名”);获取列最小值。
/// <summary>
/// 使用c# 特性“扩展类方法”
/// 使用教程:
/// a、需要给那个类型做扩展,在类型前添加this ,并把该参数放置在第一位。
/// b、使用扩展的方法时,必须引用当前命名空间,否则扩展方法无效。
/// </summary>
public static class DataTableHelper
{ /// <summary>
/// 获取DataTable中,某列的和
/// </summary>
/// <param name="table">The table.</param>
/// <param name="columnName">Name of the column.</param>
/// <returns></returns>
public static object GetSumValue(this DataTable table, string columnName)
{
return GetValueByFunction(table, columnName, "SUM({0})");
}
/// <summary>
/// 获取DataTable中,某列的最大值
/// </summary>
/// <param name="table">The table.</param>
/// <param name="columnName">Name of the column.</param>
/// <returns></returns>
public static double GetMaxValue(this DataTable table, string columnName)
{
return GetValueByFunction(table, columnName, "MAX({0})");
}
/// <summary>
/// 获取DataTable中,某列的最小值
/// </summary>
/// <param name="table">The table.</param>
/// <param name="columnName">Name of the column.</param>
/// <returns></returns>
public static double GetMinValue(this DataTable table, string columnName)
{
return GetValueByFunction(table, columnName, "Min({0})");
} /// <summary>
/// 统计标准偏差
/// </summary>
/// <param name="table"></param>
/// <param name="columnName"></param>
/// <returns></returns>
public static double GetStDevValue(this DataTable table, string columnName)
{
return GetValueByFunction(table, columnName, "StDev({0})");
}
/// <summary>
/// 统计方差
/// </summary>
/// <param name="table"></param>
/// <param name="columnName"></param>
/// <returns></returns>
public static double GetVarValue(this DataTable table, string columnName)
{
return GetValueByFunction(table, columnName, "Var({0})");
} /// <summary>
/// 根据指定公式,获取DataTable中,某列的公式值
/// </summary>
/// <param name="table">要获取数据的源DataTable</param>
/// <param name="columnName">列名称</param>
/// <param name="strFunction">字符串形式的公式</param>
/// <returns></returns>
public static double GetValueByFunction(this DataTable table,string columnName, string strFunction)
{
if (strFunction == string.Empty || strFunction == null)
return double.NaN; string expression = string.Format( strFunction , columnName); double result = double.NaN; switch (table.Columns[columnName].DataType.ToString().ToLower())
{
case "system.datetime":
result = Convert.ToDateTime(table.Compute(expression, "")).ToOADate();
break;
case "system.float":
case "system.double":
case "system.short":
case "system.int":
case "system.long":
result = Convert.ToDouble(table.Compute(expression, "").ToString());
break;
}
return result;
} }
c# 基于DataTable的Compute方法的扩展的更多相关文章
- [datatable]借助DataTable的Compute方法
借助DataTable的Compute方法,DataTable中数据不用事先排好序. 下面代码中的dt是跟前面的是一样的 DataTable dtName = dt.DefaultView.ToTab ...
- 转:DataTable的Compute方法的应用
转自:http://www.cnblogs.com/hfliyi/archive/2013/01/08/2851944.html 项目中遇到计算平均值.标准偏差.平均值+标准偏差.平均值+2倍标准偏差 ...
- 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,为 ...
- 基于AOP的插件化(扩展)方案
在项目迭代开发中经常会遇到对已有功能的改造需求,尽管我们可能已经预留了扩展点,并且尝试通过接口或扩展类完成此类任务.可是,仍然有很多难以预料的场景无法通过上述方式解决.修改原有代码当然能够做到,但是这 ...
- jQuery中的$.extend方法来扩展JSON对象及合并,方便调用对象方法
$.extend方法可以扩展JSON对象,用一个或多个其他对象来扩展一个对象,返回被扩展的对象. 例一 合并 settings 和 options,修改并返回 settings var setting ...
随机推荐
- fenby C语言 P18
#include <stdio.h> int main(){ int i; for(i=1;i<=15;i++) { if((i%2==1)) { printf("%d\n ...
- 牛客练习赛51 **E-数列** (二分,贪心,构造)
牛客练习赛51 E-数列 链接:https://ac.nowcoder.com/acm/contest/1083/E来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...
- WARNING: The host 'WeiLei' could not be looked up with resolveip.
[root@WeiLei data]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysq ...
- Mybatis JdbcType与Oracle、MySql 数据类型对应关系
MyBatis 包含的jdbcType类型 ------------------------------------------------------------------------------ ...
- 作为一名程序员,你真正了解CDN技术吗?
本文导读: 物流仓库配送如何加速 静态资源文件部署方式 静态资源加速之CDN技术 解析过程中的名词解释 最后的总结 1.物流仓库配送如何加速 我们还是从生活中购物的例子来展开. 将时光倒回到几年前,在 ...
- CVE-2019-16097:Harbor任意管理员注册漏洞复现
0x00 Harbor简介 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Docker Distri ...
- [windows篇] 使用Hexo建立个人博客,自定义域名https加密,搜索引擎google,baidu,360收录
为了更好的阅读体验,欢迎阅读原文.原文链接在此. [windows篇] 使用Hexo建立个人博客,自定义域名https加密,搜索引擎google,baidu,360收录 Part 2: Using G ...
- 关于Ubuntu10.04磁盘空间不足的问题
最近由于项目问题,需要自己写驱动,但是驱动知识太少,开始下了个内核自己玩玩,没想到的是内核下好了,Ubuntu待机后却登录不了了,重启了好几次也不行,而且颜色是蓝色,右上角还提示:Install pr ...
- 磁盘冗余阵列之RAID5的配置
1988年由加利福尼亚大学伯克利分校发表的文章首次提到并定义了RAID,当今CPU性能每年可提升30%-50%但硬盘仅提升7%,渐渐的已经成为计算机整体性能的瓶颈,并且为了避免硬盘的突然损坏导致数据丢 ...
- 线性模型之逻辑回归(LR)(原理、公式推导、模型对比、常见面试点)
参考资料(要是对于本文的理解不够透彻,必须将以下博客认知阅读,方可全面了解LR): (1).https://zhuanlan.zhihu.com/p/74874291 (2).逻辑回归与交叉熵 (3) ...