谓词筛选表达式的扩展库PredicateLib
PredicateLib是谓词筛选表达式Expression<Func<T, bool>>的一个扩展库,它可以帮你创建一个复杂且灵活的Expression<Func<T, bool>>,以作为EF、MongoDB Driver等ORM框架的查询条件。
1 Predicate的创建
1.1 true或false Predicate
var predicate = Predicate.True<User>();
表达式输出
item => true
1.2 通过属性创建Predicate
var predicate = Predicate.Create<User>("age", 2, Operator.GreaterThan);
表达式输出
item => (item.Age > 2)
2 Predicate的逻辑扩展
var predicate = Predicate.True<User>().And(item => item.Name == "laojiu");if (true)
{predicate = predicate.And(item => item.Age > 10 && item.Age < 20);
}
表达式输出
item => ((True AndAlso (item.Name == "laojiu")) AndAlso ((item.Age > 10) AndAlso (item.Age < 20)))
3 Condition转换为Predicate
PredicateLib提供Condition对象,支持传入IEnumerable<KeyValuePair<,>>
,IEnumerable<ConditionItem>
等类型作为条件项,然后转换为Predicate,适用于前端传入查询不确定的字段与值,后端不需要修改代码的需求。
var uri = new Uri("http://www.xx.com?age=1&name=laojiu&id=001");
var predicate = uri.AsCondition<User>().OperatorFor(item => item.Age, Operator.GreaterThan).IgnoreFor(item => item.Id).ToAndPredicate();
表达式输出
item => ((item.Age > 1) AndAlso item.Name.Contains("laojiu"))
谓词筛选表达式的扩展库PredicateLib相关推荐
- 爱因斯坦求和约定在Python扩展库Numpy中的实现
推荐教材: <Python数据分析.挖掘与可视化>(慕课版)(ISBN:978-7-115-52361-7),董付国,人民邮电出版社,定价49.8元,2020年1月出版,2021年12月第 ...
- python3.7扩展库是什么_Python3.4以后的版本中,____________库用于安装管理Python扩展包,________________库用于发布Python包。_学小易找答案...
[填空题]Python3.4以后的版本中,____________库用于安装管理Python扩展包,________________库用于发布Python包. [判断题]Directions: The ...
- 安装python扩展库时只能使用pip_安装 Python 扩展库时只能使用 pip 工具在线安装,如果安装不成功就没有别的办法了。_学小易找答案...
[单选题]关于Python中的复数,下列说法错误的是_________________. [填空题]在Python程序中,导入sys模块后,可以通过列表________________访问命令行参数. ...
- Python数据分析与处理扩展库pandas常用选项设置
中国大学MOOC"Python程序设计基础"第4次开课 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大 ...
- 详解Python科学计算扩展库numpy中的矩阵运算(1)
首先解答上一篇文章中使用with关键字让你的Python代码更加Pythonic最后的习题,该题答案是False,原因在于内置函数sorted()的参数reverse=True时表示降序排序,而内置函 ...
- Python科学计算扩展库numpy中的广播运算
首先解答上一个文章Python扩展库numpy中的布尔运算中的问题,该题答案为[111, 33, 2],题中表达式的作用是按列表中元素转换为字符串后的长度降序排序. ----------------- ...
- python的os库的remove可以删除只带有只读属性的_扩展库os中的方法remove()可以删除带有只读属性的文件。(2.0分)_学小易找答案...
[填空题]已知 x = {1, 2, 3},那么执行语句 x.add(3) 之后,x的值为__.(2.6分) [填空题]假设已从标准库functools导入reduce()函数,那么表达式 reduc ...
- 用python绘制y=x,y=1+sinx,编写Python程序,使用numpy、pandas、matplotlib三个扩展库在一个画布中绘制4个子图.
目录 1.编写Python程序绘制y=x图. 2.绘制表达式为1+sin(x)的图. 3.编写Python程序,使用numpy.pandas.matplotlib三个扩展库在一个画布中绘制4个子图,分 ...
- 【OpenCV图像处理入门学习教程六】基于Python的网络爬虫与OpenCV扩展库中的人脸识别算法比较
OpenCV图像处理入门学习教程系列,上一篇第五篇:基于背景差分法的视频目标运动侦测 一.网络爬虫简介(Python3) 网络爬虫,大家应该不陌生了.接下来援引一些Jack-Cui在专栏<Pyt ...
最新文章
- 第一次写KMP的体会
- 图像轮廓提取关键函数
- linux常用工具及命令
- 华为mate50鸿蒙,华为Mate50Pro首次曝光,5000mAh+鸿蒙OS+120Hz,太强
- 等待读取完毕 java_java – 等待来自客户端读取消息的套接字服务器
- 135. 分发糖果(JavaScript)
- 迅雷/快车/旋风地址转换器
- 自适应采样次数的Ransac算法
- 树莓派android p,Android P最新测试版带来更多的UI和图标方面的改进
- 趣头条自媒体审核不过怎么办,趣头条伪原创工具教程
- 4011: [HNOI2015]落忆枫音
- Affinity Designer笔记:常用快捷键
- 广东省工科赛 智能终端配送机器人:创作心路历程,踩过的坑和解决方案
- web版的在线绘图工具
- python解一元二次方程复数_一元二次方程求解(包括复数各种情况)
- [杀鸡用鸡刀]扯谈“快准狠”的去服务化商业模式
- Unite 2017 Shanghai 四大技术专场全面解锁
- Frame skipped from debugging during step-in. Note: may have been skipped because of “justMyCode“
- Janino框架初识与使用教程
- WhatsApp群发-WhatsApp协议-WhatsApp群控到底是什么?