AScript之LINQ扩展

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

  • IQueryable扩展

image

  • IEnumerable扩展

image

 

示例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

开源地址:

 

image

 

posted @ 2026-11-05 22:32  rockey627  阅读(17)  评论(0)    收藏  举报