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; }}
加入一点点配置 , 就完成了
最后 , 我们在把子表达式的创建通过一点点小技巧 。 通过外部参数来决定 。 就基本完成了一个多 And 的值比较查询条件的动态构建 。
Expression<Func< int, bool>> CreateValueCompareFilter(Func<Expression, Expression, Expression> comparerFunc, intrightValue) {varpExp = Expression.Parameter( typeof( int), "x"); varrightExp = Expression.Constant(rightValue); varbodyExp = comparerFunc(pExp, rightExp); varresult = Expression.Lambda<Func< int, bool>>(bodyExp, pExp); returnresult; }
推荐阅读
- 星链|石豪:在太空,马斯克和美国当局是如何作恶的
- 地面|全程回顾神舟十三号航天员乘组圆满完成第二次出舱任务
- 人物|马斯克谈特斯拉人形机器人:有性格 明年底或完成原型
- 测试|图森未来完成全球首次无人驾驶重卡在公开道路的全无人化测试
- AMD|AMD 350亿美元收购赛灵思交易完成时间推迟 预计明年一季度完成
- 识别|天津滨海机场RFID行李全流程跟踪系统完成建设 行李标签识别成功率可提升至99%
- 建设|5G信号全覆盖,冬奥会各赛区通信基础设施建设全部完成
- HONOR|荣耀Magic V已完成3C认证 支持66W快充
- IT|中国重汽:氢能源产品的核心布局和整车集成开发已经全面完成
- 模拟|(图文+视频)C4D野教程:Windows11的壁纸动效是如何制作的?