一、前言
在开发中,你是否还在为匹配机制随时修改、过滤条件经常变动而忧虑。如果有那么请你看下去。
二、插件推荐
System.Linq.Dynamic.Core 从命名上看,就知道它是一款动态查询的核心库。
它的主要作用有那些?能帮助开发人员解决哪些痛点?
接下来给大家逐步介绍。
三、使用
System.Linq.Dynamic.Core 我们常使用的功能有以下2点
1、动态的匹配机制。
创建模型
/// <summary> /// 学生模型 /// </summary> public class StudentModel { /// <summary> /// 姓名 /// </summary> public string Name { get; set; } /// <summary> /// 年龄 /// </summary> public int Age { get; set; } }
匹配代码
/// <summary> /// 参数化动态解析 /// </summary> public bool DynamicExpression(string userName, int userAge, string expression) { //组织数据 var model = new StudentModel { Name = userName, Age = userAge }; var lambdaExpression = expression; var lambda = DynamicExpressionParser.ParseLambda<StudentModel, bool>(ParsingConfig.Default, true, lambdaExpression).Compile().DynamicInvoke(model); return (bool)lambda; }
测试1
在测试界面,输入条件
用户名:张三 年龄:18
匹配条件: Name==”张三” && (Age==19 || Age==18)
点击动态解析表达式按钮
可以看到,该数据是满足匹配条件。
测试2
在测试界面,输入条件
用户名:张三 年龄:20
匹配条件: Name==”张三” && (Age==19 || Age==18)
点击动态解析表达式按钮
可以看到,该数据是不满足匹配条件。
2、动态条件过滤数据。
动态条件筛选数据代码
/// <summary> /// 参数化动态解析 /// </summary> public int DynamicExpressionSelectData(string expression) { //组织数据 var list = new List<StudentModel>() { new StudentModel { Name = "张三", Age= 18, }, new StudentModel { Name = "李四", Age= 19, } , new StudentModel { Name = "王五", Age= 30, } }; // "张三,李四".Contains(Name) && (Age==19 || Age==18) var count = list.AsQueryable().Where(expression).ToList().Count; return count; }
测试1
可以看到根据条件表达式,查询出一条满足条件的数据。
测试2
改变查询条件:”张三,李四”.Contains(Name) && (Age==19 || Age==18)
可以看到根据条件表达式,查询出一条满足条件的数据。
四、总结
根据以上2个例子可以看出,System.Linq.Dynamic.Core可以支持c# 任何表达式解析。因此我们在项目过程中,可以根据配置解析、匹配、筛选数据,大大减少开发人员工作。
关注我:一个全栈多端的宝藏博主,定时分享技术文章,不定时分享开源项目。
带你认识不一样的程序世界
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容