您的位置:首页 > 新闻 > 资讯 > NetCore DynamicExpresso 动态表达式使用例子

NetCore DynamicExpresso 动态表达式使用例子

2025/6/4 16:21:21 来源:https://blog.csdn.net/arno1988/article/details/142204299  浏览:    关键词: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}");// 输出:30var target = new Interpreter();target.SetVariable("a", new Customer { Name = "AA" });target.SetVariable("b", new Customer { Name = "BB" });Console.WriteLine(target.Eval("a.Name"));// 输出:AAConsole.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 + DynamicExpressoforeach (var a in list){a.TradeTitle = a.TradeTitle + "_update";// 更新内存值Console.WriteLine(a.ToString());}}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com