你是否还在为匹配数据和过滤数据而忧虑

金歌  金牌会员 | 2024-8-26 17:26:50 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 919|帖子 919|积分 2757

一、前言

  在开发中,你是否还在为匹配机制随时修改、过滤条件常常变动而忧虑。如果有那么请你看下去。
 二、插件推荐

  System.Linq.Dynamic.Core 从定名上看,就知道它是一款动态查询的核心库。
   它的主要作用有那些?能帮助开发职员办理哪些痛点?
   接下来给大家逐步介绍。
三、使用

  System.Linq.Dynamic.Core 我们常使用的功能有以下2点
  1、动态的匹配机制。
  创建模型
  1. /// <summary>
  2. /// 学生模型
  3. /// </summary>
  4. public class StudentModel
  5. {
  6.     /// <summary>
  7.     /// 姓名
  8.     /// </summary>
  9.     public string Name { get; set; }
  10.     /// <summary>
  11.     /// 年龄
  12.     /// </summary>
  13.     public int Age { get; set; }
  14. }
复制代码
 
  匹配代码
  1. /// <summary>
  2. /// 参数化动态解析
  3. /// </summary>
  4. public bool DynamicExpression(string userName, int userAge, string expression)
  5. {
  6.     //组织数据
  7.     var model = new StudentModel
  8.     {
  9.         Name = userName,
  10.         Age = userAge
  11.     };
  12.     var lambdaExpression = expression;
  13.     var lambda = DynamicExpressionParser.ParseLambda<StudentModel, bool>(ParsingConfig.Default, true, lambdaExpression).Compile().DynamicInvoke(model);
  14.     return (bool)lambda;
  15. }
复制代码
  测试1
   在测试界面,输入条件
  用户名:张三  年事:18
  匹配条件: Name=="张三" && (Age==19 || Age==18)  
  点击动态分析表达式按钮
  

  可以看到,该数据是满足匹配条件。
  测试2
   在测试界面,输入条件
  用户名:张三  年事:20
  匹配条件: Name=="张三" && (Age==19 || Age==18)  
  点击动态分析表达式按钮
  

  可以看到,该数据是不满足匹配条件。
 
  2、动态条件过滤数据。
  动态条件筛选数据代码
  1. /// <summary>
  2. /// 参数化动态解析
  3. /// </summary>
  4. public int DynamicExpressionSelectData(string expression)
  5. {
  6.     //组织数据
  7.     var list = new List<StudentModel>()
  8.     {
  9.         new StudentModel
  10.         {
  11.             Name = "张三",
  12.             Age= 18,
  13.         },
  14.          new StudentModel
  15.         {
  16.             Name = "李四",
  17.             Age= 19,
  18.         }
  19.          ,
  20.           new StudentModel
  21.         {
  22.             Name = "王五",
  23.             Age= 30,
  24.         }
  25.     };
  26.     // "张三,李四".Contains(Name) && (Age==19 || Age==18)
  27.     var count = list.AsQueryable().Where(expression).ToList().Count;
  28.     return count;
  29. }
复制代码
 
  测试1
   

  可以看到根据条件表达式,查询出一条满足条件的数据。
  测试2 
  改变查询条件:"张三,李四".Contains(Name) && (Age==19 || Age==18)
  

  可以看到根据条件表达式,查询出一条满足条件的数据。
四、总结

  根据以上2个例子可以看出,System.Linq.Dynamic.Core可以支持c# 任何表达式分析。因此我们在项目过程中,可以根据配置分析、匹配、筛选数据,大大淘汰开发职员工作。
 
   关注我:一个全栈多端的宝藏博主,定时分享技能文章,不定时分享开源项目。
    带你熟悉不一样的程序天下

 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表