魅力程序猿

  • 首页
  • Java
  • Android
  • APP
    • 扑克计分器
    • Video Wallpaper
  • 联系我
  • 关于我
  • 资助
道子
向阳而生
  1. 首页
  2. AI技术
  3. 正文

AScript定制left/right join查询语法

2026年5月27日 7点热度 0人点赞 0条评论

📰 来源: 博客园


AScript是一个开源的C#动态脚本解析执行引擎,支持扩展自定义语法。

在之前的文章《AScript如何实现LINQ语法》中实现了C#标准LINQ查询语法,但并不支持left join/right join语句,不过.NET10在Queryable/Enumerable中新增了LeftJoin/RightJoin扩展方法(LINQ查询语法中仍然不支持left join/right join写法)。

本篇将在LINQ语法的基础上增加left join和right join语法,以提高脚本灵活性。

一、left join

标准LINQ查询的左连接写法如下:

1 from p in context.Persons
2 join a in context.AddressInfos on p.Id equals a.UserId into aa
3 from a in aa.DefaultIfEmpty()
4 select new { p.Id, p.Name, p.Age, MyAddress = a.Address };

简化后的left join语法如下:

1 from p in context.Persons
2 left join a in context.AddressInfos on p.Id equals a.UserId
3 select new { p.Id, p.Name, p.Age, MyAddress = a.Address };

1、在QueryNode中添加AddLeftJoin方法

1 public void AddLeftJoin(string varName, ITreeNode source, ITreeNode key1, ITreeNode key2)
2 {
3     string name1 = $"___{varName}___";
4     AddJoin(varName, source, key1, key2, name1);
5     AddFrom(varName, new CallFuncNode { Name = "DefaultIfEmpty", Args = new ITreeNode[] { new VariableNode(name1) } });
6 }

可以看到,AddLeftJoin方法中我们手动增加了join ... into xxx和from ... xxx.DefaultIfEmpty()语句。

2、在FromTokenHandler中添加left join解析

 1 public void

🔗 原文链接: 点击阅读原文

标签: AI 人工智能 技术博客
最后更新:2026年5月27日

daozi

这个人很懒,什么都没留下

点赞
< 上一篇

文章评论

您需要 登录 之后才可以评论
搜索
联系方式

QQ群:179730949
QQ群:114559024
欢迎您加入Android大家庭
本人QQ:136049925

赐我一丝安慰
给我一点鼓励

COPYRIGHT © 2023 魅力程序猿. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备15000477号