WinForm/C# DataTable.Compute() 实现布尔、数值类型动态计算

wanghaiwen · 2019年03月16日 · 最后由 wanghaiwen 回复于 2019年04月24日 · 166 次阅读

DataTable 的 Compute 方法可实现动态表达式的计算,包括布尔值、数值,如下例:

namespace DataTableCompute
{
    class Test
    {
        static void Main(string[] args)
        {
            bool boolResult;
            decimal numResult;
            try
            {
                boolResult = Convert.ToBoolean(new DataTable().Compute("2 = 3 and '纬纱' = '纬纱' and '非库存纱' <> '库存纱' and 0.6 >= 0.5", ""));
                numResult = Convert.ToDecimal(new DataTable().Compute("(1 + 2) / 5", ""));
            }
            catch
            {
                throw new Exception("计算错误!");
            }

            Console.WriteLine(boolResult); //False
            Console.WriteLine(numResult); //0.6
            Console.ReadKey();
        }
    }
}

该方法有两个参数:

        // 摘要:
        //     计算用来传递筛选条件的当前行上的给定表达式。
        //
        // 参数:
        //   expression:
        //     要计算的表达式。
        //
        //   filter:
        //     要限制在表达式中进行计算的行的筛选器。
        //
        // 返回结果:
        //     System.Object,设置为计算结果。
        public object Compute(string expression, string filter);

其中expression的语法与Sql类似,借助该方法,可以对字符串型的表达式进行计算。

参考资料:
https://docs.microsoft.com/zh-cn/dotnet/api/system.data.datacolumn.expression?view=netframework-4.7.2
http://www.cnblogs.com/fanyf/archive/2012/05/11/2495919.html

参考资料都挂了~,我确定我网线没被拔

huqianqian 回复

参考资料都挂了~,我确定我网线没被拔

问题已修复,这论坛,添加链接不行,直接以文字方式复制粘贴链接可以...

3楼 已删除
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册