Expression<Func< int, bool>> JoinSubFilters(Func<Expression, Expression, Expression> expJoiner, paramsExpression<Func< int, bool>>[] subFilters) {// xvarpExp = Expression.Parameter( typeof( int), "x"); varresult = subFilters[ 0]; foreach( varsub insubFilters[ 1..]) {varleftExp = result.Unwrap(pExp); varrightExp = sub.Unwrap(pExp); varbodyExp = expJoiner(leftExp, rightExp);
result = Expression.Lambda<Func< int, bool>>(bodyExp, pExp); }
returnresult; }}
总结
如果逻辑关系更复杂 , 有多层嵌套像树形一样 , 比较方法也很多花样 , 甚至包含方法 , 怎么办?
可以参考以下示例:
- https://github.com/newbe36524/Newbe.Demo/tree/main/src/BlogDemos/Newbe.ExpressionsTests/Newbe.ExpressionsTests/FilterFactory
- 戏精分享 C#表达式树 , 第一季
- https://www.bilibili.com/video/BV15y4y1r7pK
- 戏精分享 C#表达式树 , 第二季
- https://www.bilibili.com/video/BV1Mi4y1L7oR
- 《只要十步 , 你就可以应用表达式树来优化动态调用》
- https://www.newbe.pro/Newbe.Claptrap/Using-Expression-Tree-To-Build-Delegate/index.html
- https://github.com/newbe36524/Newbe.Demo/blob/main/src/BlogDemos/Newbe.ExpressionsTests/Newbe.ExpressionsTests/Examples/Z01SingleWhereTest.cs
微软最有 价值专家(MVP)
微软最有价值专家是微软公司授予第三方技术专业人士的一个全球奖项 。 28年来 , 世界各地的技术社区领导者 , 因其在线上和线下的技术社区中分享专业知识和经验而获得此奖项 。
MVP是经过严格挑选的专家团队 , 他们代表着技术最精湛且最具智慧的人 , 是对社区投入极大的热情并乐于助人的专家 。 MVP致力于通过演讲、论坛问答、创建网站、撰写博客、分享视频、开源项目、组织会议等方式来帮助他人 , 并最大程度地帮助微软技术社区用户使用Microsoft技术 。
更多详情请登录官方网站:
https://mvp.microsoft.com/zh-cn
表达式树 (C#)文档
推荐阅读
- 星链|石豪:在太空,马斯克和美国当局是如何作恶的
- 地面|全程回顾神舟十三号航天员乘组圆满完成第二次出舱任务
- 人物|马斯克谈特斯拉人形机器人:有性格 明年底或完成原型
- 测试|图森未来完成全球首次无人驾驶重卡在公开道路的全无人化测试
- AMD|AMD 350亿美元收购赛灵思交易完成时间推迟 预计明年一季度完成
- 识别|天津滨海机场RFID行李全流程跟踪系统完成建设 行李标签识别成功率可提升至99%
- 建设|5G信号全覆盖,冬奥会各赛区通信基础设施建设全部完成
- HONOR|荣耀Magic V已完成3C认证 支持66W快充
- IT|中国重汽:氢能源产品的核心布局和整车集成开发已经全面完成
- 模拟|(图文+视频)C4D野教程:Windows11的壁纸动效是如何制作的?