IT评测·应用市场-qidao123.com
标题:
你是否还在为匹配数据和过滤数据而忧虑
[打印本页]
作者:
金歌
时间:
2024-8-26 17:26
标题:
你是否还在为匹配数据和过滤数据而忧虑
一、前言
在开发中,你是否还在为匹配机制随时修改、过滤条件常常变动而忧虑。如果有那么请你看下去。
二、插件推荐
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# 任何表达式分析。因此我们在项目过程中,可以根据配置分析、匹配、筛选数据,大大淘汰开发职员工作。
关注我:一个全栈多端的宝藏博主,定时分享技能文章,不定时分享开源项目。
带你熟悉不一样的程序天下
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4