NetCore DynamicExpresso 动态表达式使用例子

复制代码
Simple.cs 简单使用例子
复制代码
using DynamicExpresso;

namespace DynamicExpressoDemo
{
    class Customer { public string Name { get; set; } }

    public class Simple
    {
        public static void Test()
        {
            // 返回结果
            Interpreter target1 = new Interpreter();
            double result1 = target1.Eval<double>("Math.Min(x, y) + 5", new Parameter("x", typeof(double), 1), new Parameter("y", typeof(double), 2));
            Console.WriteLine($"result:{result1}");// 输出:6

            // 定义变量并赋值
            var target2 = new Interpreter().SetVariable("myVar", 23);
            var result2 = target2.Eval("myVar + 10");
            Console.WriteLine($"result:{result2}");// 输出:33

            // 动态参数
            var target3 = new Interpreter();
            var parameters = new[] { new Parameter("x", 23), new Parameter("y", 7) };
            var result3 = target3.Eval("x + y", parameters);
            Console.WriteLine($"result:{result3}");// 输出:30

            var target = new Interpreter();
            target.SetVariable("a", new Customer { Name = "AA" });
            target.SetVariable("b", new Customer { Name = "BB" });
            Console.WriteLine(target.Eval("a.Name"));// 输出:AA
            Console.WriteLine(target.Eval("b.Name")); // 输出:BB
        }
    }
}

QueryMemoryData.cs 查询内存数据例子

复制代码
using DynamicExpresso;

namespace DynamicExpressoDemo
{
    class Trade
    {
        public int TradeID { get; set; }

        public string TradeTitle { get; set; }

        public DateTime Created { get; set; }

        public int CustomerID { get; set; }
    }

    public class QueryMemoryData
    {
        static Interpreter interpreter = new Interpreter();

        public static void Filter()
        {
            var tradeList = new List<Trade>()
            {
                new Trade() { TradeID = 1, TradeTitle = "交易1", Created = Convert.ToDateTime("2020/8/1"), CustomerID = 1 },
                new Trade() { TradeID = 2, TradeTitle = "交易2", Created = Convert.ToDateTime("2020/8/5"), CustomerID = 2 },
                new Trade() { TradeID = 3, TradeTitle = "交易3", Created = Convert.ToDateTime("2020/8/10"), CustomerID = 3 }
            };

            // 查询内存值
            string whereExpression = "(trade.CustomerID == 1 || trade.CustomerID == 2 || trade.CustomerID == 10) && trade.Created <= Convert.ToDateTime(\"2020-08-20\")"; 
            Func<Trade, bool> queryFunc = interpreter.ParseAsDelegate<Func<Trade, bool>>(whereExpression, "trade"); 
            var list = tradeList.Where(queryFunc).ToList();// list + DynamicExpresso

            foreach (var a in list)
            {
                a.TradeTitle = a.TradeTitle + "_update";// 更新内存值
                Console.WriteLine(a.ToString());
            }
        }
    }
}
复制代码
相关推荐
卡兰芙的微笑7 分钟前
GDB调试指南:从入门到精通
windows
优选资源分享9 分钟前
PowerToys v0.97.0 Windows 窗口优化 + 搜索工具
windows·实用工具
Qiuner1 小时前
软件工程计算机网络WindowService2008 DNS DHCP网络策略和访问策略IIS 相关配置 期末考试实操题操作题windows运维
运维·网络·windows·计算机网络
x***r1511 小时前
Havij 1.12 Free注入漏洞扫描安装步骤详解(附使用教程)
windows
love530love1 小时前
【避坑指南】提示词“闹鬼”?Stable Diffusion 自动注入神秘词汇 xiao yi xian 排查全记录
人工智能·windows·stable diffusion·model keyword
习惯就好zz1 小时前
解决VMware Ubuntu端口映射SSH连接失败问题:无需重启服务器的快速修复方案
服务器·windows·ubuntu·ssh·vmware
小宇的天下1 小时前
Calibre :Standard Verification Rule Format(SVRF) Manual (1-2)
前端·javascript·windows
love530love1 小时前
【故障解析】Stable Diffusion WebUI 更换主题后启动报 JSONDecodeError?可能是“主题加载”惹的祸
人工智能·windows·stable diffusion·大模型·json·stablediffusion·gradio 主题
Filotimo_1 小时前
在java后端开发中,LEFT JOIN的用法
java·开发语言·windows
william_djj3 小时前
python3.8 提取xlsx表格内容填入单个文件
windows·python·xlsx