例子如下:

Z.Expressions从2.0开始支持了NetCore,但是收费的。其它两者免费。建议使用DynamicExpresso,免费而且速度快。LambdaParser目前支持太少。

static void Main(string[] args)
{ Console.OutputEncoding = Encoding.Unicode; System.Diagnostics.Stopwatch sp = new Stopwatch();
sp.Start();
var code = "i<100&&s.Contains(\"测试\")";
var interpreter = new DynamicExpresso.Interpreter();
var result = interpreter.ParseAsDelegate<Func<int, string, bool>>(code, "i", "s");
//var result = interpreter.ParseAsExpression<Func<int, string, bool>>(code, "i", "s").Compile();
for (int i = ; i < ; i++)
{
var v = result(i, "我在测试" + i);//2213ms
//Console.WriteLine(v);
}
sp.Stop();
Console.WriteLine("time:" + sp.ElapsedMilliseconds + "ms"); //System.Diagnostics.Stopwatch sp = new Stopwatch();
//sp.Start();
////var code = @"
//// var list = new List<int>() { 1, 2, 3, 4, x };
//// var filter = list.Where(x => x < 4);
//// return filter.Sum(x => x); ";
//var code = "i<100&&s.Contains(\"测试\")";
////var result = Z.Expressions.Eval.Compile<Func<int, string, bool>>(code, "i", "s"); //for (int i = 0; i < 100000; i++)
//{
// var v = result(i, "我爱测试");
// //Console.WriteLine(v);
//}
//sp.Stop();
//Console.WriteLine("time:" + sp.ElapsedMilliseconds + "ms"); //var parse = new LambdaParser();
//while (true)
//{
// try
// {
// Console.WriteLine(new string('_', 20));
// var dics = new Dictionary<string, object>();
// dics.Add("x1", 32.0);
// dics.Add("x2", 23.0);
// dics.Add("x3", 34.5);
// dics.Add("x4", 34.5);
// dics.Add("s1", "my name is xxxxzhu!");
// dics.Add("b1", true);
// foreach (var item in dics)
// {
// Console.WriteLine(item.Key + "\t" + item.Value);
// }
// Console.WriteLine(new string('_', 20));
// Console.WriteLine("expr:");
// var expr = Console.ReadLine();
// var value = parse.Eval(expr, dics);
// Console.WriteLine("value======================" + value);
// }
// catch (Exception ex) { Console.WriteLine("error====================:" + ex.Message); }
//}
}

NetCore中使用DynamicExpresso、Z.Expressions、LambdaParser进行安字符串求值的更多相关文章

  1. 在C#开发中使用第三方组件LambdaParser、DynamicExpresso、Z.Expressions,实现动态解析/求值字符串表达式

    在进行项目开发的时候,刚好需要用到对字符串表达式进行求值的处理场景,因此寻找了几个符合要求的第三方组件LambdaParser.DynamicExpresso.Z.Expressions,它们各自功能 ...

  2. javascript中的所有内容都是一个对象:字符串、值、数组、函数…

    javascript中的所有内容都是一个对象:字符串.值.数组.函数…此外,javascript允许自定义对象.javascript对象JavaScript提供多个内置对象,如字符串.日期.数组等.对 ...

  3. .NetCore中的日志(2)集成第三方日志工具

    .NetCore中的日志(2)集成第三方日志工具 0x00 在.NetCore的Logging组件中集成NLog 上一篇讨论了.NetCore中日志框架的结构,这一篇讨论一下.NetCore的Logg ...

  4. .NetCore中的日志(1)日志组件解析

    .NetCore中的日志(1)日志组件解析 0x00 问题的产生 日志记录功能在开发中很常用,可以记录程序运行的细节,也可以记录用户的行为.在之前开发时我一般都是用自己写的小工具来记录日志,输出目标包 ...

  5. 比如在vi中按ctrl+z

    比如在vi中按ctrl+z有个命令可以恢复会话,我忘了,大家谁记得?   分享到: 对我有用[0] 丢个板砖[0] 引用 | 举报| 编辑 删除 管理 回复次数:8   hellwolf hellwo ...

  6. AutoMapper在asp.netcore中的使用

    # AutoMapper在asp.netcore中的使用  automapper 是.net 项目中针对模型之间转换映射的一个很好用的工具,不仅提高了开发的效率还使代码更加简洁,当然也是开源的,htt ...

  7. netcore中的缓存介绍

    Cache(缓存)是优化web应用的常用方法,缓存存放在服务端的内存中,被所有用户共享.由于Cache存放在服务器的内存中,所以用户获取缓存资源的速度远比从服务器硬盘中获取快,但是从资源占有的角度考虑 ...

  8. 在netcore中如何注入同一个接口的多个实现

    netcore中自带了Ioc框架,这也影响了我们的编码习惯,以前都是静态类或者直接new对象,现在有了Ioc框架的支持,我们也不必守旧,应当使用起来,接受这种对象管理方式.使用过java的同仁,都习惯 ...

  9. .NetCore中EFCore的使用整理(二)-关联表查询

    EF常用处理关联加载的方式有3中:延迟加载(Lazy Loading).贪婪加载 (Eager Loading)以及显示加载. 一.EF Core  1.1 1.当前的版本,还不支持延迟加载(Lazy ...

随机推荐

  1. spring-boot项目在eclipse中指定配置文件启动

    原文:https://blog.csdn.net/ztx114/article/details/80076339 如下图我的项目有三个配置文件,假如我向指定用application-test.yml启 ...

  2. MORMOT的数据序列

    MORMOT的数据序列 mormot服务器回复客户端通过Ctxt.OutContent属性. 此属性的类型是:SockString.   // property OutContent: SockStr ...

  3. 安装GCC-4.6.1详细教程

    一.什么是Gcc Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大.性能优越的多平台编译器,是GNU的代表作品之一.gcc是可以在多种硬体平台上编译出可执行程序的超级编译 ...

  4. 设计原则:多使用Specialized Types

    使用Specialized Types的好处: 可以服用:验证.计算. 更高的编程层次. 容易在UI层封装组件.

  5. Java_并发线程_Semaphore、CountDownLatch、CyclicBarrier、Exchanger

    1.Semaphore 信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们可以正确.合理的使用公共资源. Semaphore当前在多线程 ...

  6. 用自定义的RoundImageView来实现圆形图片(可加边框)

    本文的控件来自:http://blog.csdn.net/alan_biao/article/details/17379925 这个控件不同于之前介绍过的那个框架,这个仅仅能过将图片裁剪为圆形,没能弄 ...

  7. gradle新建工程,多项目依赖,聚合工程

    感谢gradle完全的文档.开始完全没想过新建项目会弄我一天时间,都说gradle构建项目简单,我现在回复他们呵呵. gradle是个非常复杂的工具,从他的完整包80M和72章官方文档就可以看出一二. ...

  8. Apache Jmeter 教程

    Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率. 熟练使用Jmeter后, 能用Jmeter搞定的事情,你就不会使用LoadR ...

  9. 【已解决】unity4.2.0f4 导出Android工程报错:Error building Player: ArgumentException: Illegal characters in path. [unity导出android工程 报错,路径含有非法字符]

    使用unity3D开发的一个客户端,需要导出为Android工程,然后接入一些第三方android SDK. unity版本 操作系统为: OS 名称: Microsoft Windows 7 旗舰版 ...

  10. 浅谈Hybrid技术的设计与实现【转】

    https://www.cnblogs.com/yexiaochai/p/4921635.html 前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术 ...