AScript是一个开源的C#动态脚本解析执行引擎,提供了LINQ脚本扩展功能。
IQueryable扩展

IEnumerable扩展

示例1:
1 var list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
2 var result = list.WhereScript(x => "x % 2 == 0").ToList();
3 // 结果:2,4,6,8,10
示例2:
动态脚本中注入变量和函数
1 var context = new ScriptContext();
2 context.SetVar("n", 3);
3 context.AddFunc<int, bool>("isOdd", a => a % 2 == 1);
4 var list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
5 // 被3整除并且是奇数
6 var result = list.WhereScript(x => "x % n == 0 && isOdd(x)", context).ToList();
7 // 结果:3,9
示例3:
动态脚本使用Sql语言
1 var context = new ScriptContext();
2 // 指定sql脚本语言
3 context.Lang = SqlLang.Instance;
4 context.SetVar("n", 3);
5 context.AddFunc<int, bool>("isOdd", a => a % 2 == 1);
6 var list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
7 // 被3整除并且是奇数,SQL语法
8 var result = list.WhereScript(x => "x % n = 0 and isOdd(x)", context).ToList();
9 // 结果:3,9
应用场景
前端动态添加查询条件,勾选查询字段、比较方式(等于、大于、小于)、填写数据,后端根据前端传的条件动态拼接查询字符串,但是查询使用ORM,此时AScript LINQ扩展就派上用场了。
大家项目中是如何处理LINQ查询中动态拼接查询条件的呢?
nuget安装包:install-package AScript
开源地址:
