拉姆达表达式 追加 条件判断 Expression<Func<T, bool>>

2014/11/13 14:47:59  虫虫飞520   程序员俱乐部   我要评论(0)
  • 摘要:publicstaticclassPredicateBuilder{///<summary>///机关函数应用True时:单个AND有效,多个AND有效;单个OR无效,多个OR无效;混应时写在AND后的OR有效///</summary>///<typeparamname="T"></typeparam>///<returns></returns>publicstaticExpression<Func<T
  • 标签:expression 表达式

public static class PredicateBuilder
{

/// <summary>
/// 机关函数应用True时:单个AND有效,多个AND有效;单个OR无效,多个OR无效;混应时写在AND后的OR有效 
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static Expression<Func<T, bool>> True<T>() { return f => true; }

/// <summary>
/// 机关函数应用False时:单个AND无效,多个AND无效;单个OR有效,多个OR有效;混应时写在OR后面的AND有效 
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static Expression<Func<T, bool>> False<T>() { return f => false; }

public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> expr1,
Expression<Func<T, bool>> expr2)
{
var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
return Expression.Lambda<Func<T, bool>>
(Expression.Or(expr1.Body, invokedExpr), expr1.Parameters);
}

public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr1,
Expression<Func<T, bool>> expr2)
{
var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
return Expression.Lambda<Func<T, bool>>
(Expression.And(expr1.Body, invokedExpr), expr1.Parameters);
}
}

拉姆达表达式 追加 条件判断 ExpressionFuncT, bool相关推荐

  1. SqlSugar常用查询实例-拉姆达表达式

    SqlSugar支持拉姆达表达式查询,匿名对象参数等,相对还是比较方便好用的. 一.查询列表: //查询列表SqlSugarClient db = SugarContext.GetInstance() ...

  2. 拉姆达表达式学习(1)

    我曾经遇到一个项目,项目里面需要经常对一系列的同类型集合进行操作,如对集合进行增加元素,删除集合的指定索引的元素等等. 我们可以使用ArrayList来进行.如 1 ArrayList stringL ...

  3. 拉姆达表达式学习(2)

    本文转载自:http://www.cnblogs.com/zhouji432600/archive/2010/05/30/1747383.html 在.net3.5里面,委托的定义和实现被大大的简化了 ...

  4. 拉姆达表达式(Lambda Expressions)

    让我们先看一个简单的拉姆达表达式: x=>x/2 这个表达式的意思是:x为参数,对x进行相应的操作后的结果作为返回值. 通过这个拉姆达表达式,我们可以看到: 这个表达式没有任何类型信息,但这并不 ...

  5. 拉姆达表达式相关知识

    拉姆达表达式 拉姆达表达式是创建匿名函数的另一种方法.因此,拉姆达表达式可以赋值给委托.虽然主要在操作LINQ中使用拉姆达表        达式,但是这种表达式也适用于委托和事件. 拉姆达表达式运算符 ...

  6. C#拉姆达(=)表达式

    前言: 之前小猪曾经分享过自己对C#委托的一点理解 其实在使用委托的过程中我们会大量的使用拉姆达(=>)表达式 介绍: "Lambda表达式"是一个匿名函数,是一种高效的类似 ...

  7. el表达式 多条件判断

    el表达式 多条件判断 CreationTime--2018年9月13日08点59分 Author:Marydon 1.情景展示 ACCESS_ID == 'APP1039' 且 CARDTYPE = ...

  8. java1.8 Lambda拉姆达表达式深入探究

    当我们遇到下面情况时: SingleObj.getInstance().setRunnable(new Runnable() {@Overridepublic void run() {} }); 编译 ...

  9. C# 匿名方法和拉姆达表达式

    "` "`代码如下: using System; using System.Collections.Generic; using System.Linq; using System ...

最新文章

  1. 在Red Hat Linux中自动运行程序
  2. 小程序 data-***自定义
  3. linux e514写入错误,Linux上使用vim编辑文件保存时报错:E514: write error (file system full?)...
  4. 避免人为灾难:盘点数据中心里十大愚蠢行为
  5. exit和abort都是用来终止程序的函数
  6. ITK VKT 安装-详细
  7. 扩展内存条 兼容性问题 双通道
  8. zabbix Too many processes on xxx
  9. python怎么判断倍数_如何判断一个数是否是七的倍数?
  10. echarts关系图
  11. C# extention extension
  12. 原来国家的名字可以如此浪漫(the Romantic Name of a Country)
  13. 纪中游记 - Day 1
  14. 小程序上传文件报错uploadFile:fail url scheme is invalid,uploadFile:fail createUploadTask:fail Error: Invalid
  15. 在线代码格式化网址:https://tool.oschina.net/codeformat/xml
  16. UPC-2021个人训练赛第20场-部分题解
  17. FreeRTOS笔记篇:第五章 --软件定时
  18. Android Q RK3326 随笔集
  19. Rails sanitize
  20. html模拟发送按键,提交/模拟按键HTML

热门文章

  1. matlab中乘法“*”和点乘“.*”;除法“/”和点除“./”的联系和区别。
  2. 程序员群嘲红芯浏览器:注释过度很业余 创新混淆视听
  3. 如何运行jnlp文件
  4. JAVA API1.8中文版 谷歌翻译 最准确的翻译版本!
  5. CSS层叠样式表(Cascading Style Sheets)
  6. xml和json转换的在线工具
  7. 美国时间格式化成通用时间
  8. 重新认识 Java 中的内存映射(mmap)
  9. joda-money的使用
  10. #include<set>头文件的用法