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相关推荐

  1. 爱因斯坦求和约定在Python扩展库Numpy中的实现

    推荐教材: <Python数据分析.挖掘与可视化>(慕课版)(ISBN:978-7-115-52361-7),董付国,人民邮电出版社,定价49.8元,2020年1月出版,2021年12月第 ...

  2. python3.7扩展库是什么_Python3.4以后的版本中,____________库用于安装管理Python扩展包,________________库用于发布Python包。_学小易找答案...

    [填空题]Python3.4以后的版本中,____________库用于安装管理Python扩展包,________________库用于发布Python包. [判断题]Directions: The ...

  3. 安装python扩展库时只能使用pip_安装 Python 扩展库时只能使用 pip 工具在线安装,如果安装不成功就没有别的办法了。_学小易找答案...

    [单选题]关于Python中的复数,下列说法错误的是_________________. [填空题]在Python程序中,导入sys模块后,可以通过列表________________访问命令行参数. ...

  4. Python数据分析与处理扩展库pandas常用选项设置

    中国大学MOOC"Python程序设计基础"第4次开课 推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大 ...

  5. 详解Python科学计算扩展库numpy中的矩阵运算(1)

    首先解答上一篇文章中使用with关键字让你的Python代码更加Pythonic最后的习题,该题答案是False,原因在于内置函数sorted()的参数reverse=True时表示降序排序,而内置函 ...

  6. Python科学计算扩展库numpy中的广播运算

    首先解答上一个文章Python扩展库numpy中的布尔运算中的问题,该题答案为[111, 33, 2],题中表达式的作用是按列表中元素转换为字符串后的长度降序排序. ----------------- ...

  7. python的os库的remove可以删除只带有只读属性的_扩展库os中的方法remove()可以删除带有只读属性的文件。(2.0分)_学小易找答案...

    [填空题]已知 x = {1, 2, 3},那么执行语句 x.add(3) 之后,x的值为__.(2.6分) [填空题]假设已从标准库functools导入reduce()函数,那么表达式 reduc ...

  8. 用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个子图,分 ...

  9. 【OpenCV图像处理入门学习教程六】基于Python的网络爬虫与OpenCV扩展库中的人脸识别算法比较

    OpenCV图像处理入门学习教程系列,上一篇第五篇:基于背景差分法的视频目标运动侦测 一.网络爬虫简介(Python3) 网络爬虫,大家应该不陌生了.接下来援引一些Jack-Cui在专栏<Pyt ...

最新文章

  1. 第一次写KMP的体会
  2. 图像轮廓提取关键函数
  3. linux常用工具及命令
  4. 华为mate50鸿蒙,华为Mate50Pro首次曝光,5000mAh+鸿蒙OS+120Hz,太强
  5. 等待读取完毕 java_java – 等待来自客户端读取消息的套接字服务器
  6. 135. 分发糖果(JavaScript)
  7. 迅雷/快车/旋风地址转换器
  8. 自适应采样次数的Ransac算法
  9. 树莓派android p,Android P最新测试版带来更多的UI和图标方面的改进
  10. 趣头条自媒体审核不过怎么办,趣头条伪原创工具教程
  11. 4011: [HNOI2015]落忆枫音
  12. Affinity Designer笔记:常用快捷键
  13. 广东省工科赛 智能终端配送机器人:创作心路历程,踩过的坑和解决方案
  14. web版的在线绘图工具
  15. python解一元二次方程复数_一元二次方程求解(包括复数各种情况)
  16. [杀鸡用鸡刀]扯谈“快准狠”的去服务化商业模式
  17. Unite 2017 Shanghai 四大技术专场全面解锁
  18. Frame skipped from debugging during step-in. Note: may have been skipped because of “justMyCode“
  19. Janino框架初识与使用教程
  20. WhatsApp群发-WhatsApp协议-WhatsApp群控到底是什么?

热门文章

  1. 理解 Delphi 的类(七) - 认识类的多态
  2. 面向全球用户的Teams app之夏令时篇
  3. 什么是Google On.Here,以及如何设置?
  4. 5分钟内看懂机器学习和深度学习的区别
  5. Nodejs前端服务器压缩图片
  6. 【转】《从入门到精通云服务器》第六讲—OpenStack基础
  7. Oracle级联查询
  8. 解析super-smack的smack文件
  9. 手机自动化测试:appium源码分析之bootstrap七
  10. 【转】Android 带checkbox的listView 实现多选,全选,反选 -- 不错