AScript之LINQ扩展

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

开源地址:

相关推荐
1-1=06 小时前
C# 委托与事件
开发语言·c#
学以智用7 小时前
runtimeconfig.json + appsettings 完整详解(.NET Core/.NET5+,对比 machine.config)
.net
qq_4101942912 小时前
.NET 性能优化:先找瓶颈,再谈技巧
性能优化·.net
玩泥巴的13 小时前
把AI编码从自由生成到受约束声明:微信生态 .NET SDK 中用源生成器压制 AI 编码幻觉的工程实践
微信·.net·aot·roslyn
Jeff-Tsai13 小时前
Day 10:多数据库支持:CRUD 与结构升级
.net·架构设计·erp·definition-driven
1-1=014 小时前
C# 特性(Attribute)
c#·.net·.netcore
IT规划师15 小时前
Redis 数据类型全解 - Bitmap 生产实战:把位视图讲准、用对、守住红线(六)
redis·.net
淡海水1 天前
10-01-互操作-C#与C++边界的内存管理
unity·c#·游戏引擎·.netcore·gc
WarPigs1 天前
C#把byte[]以十六进制打印,带分割符
c#