C# PredicatBuilder
2023-09-14 09:10:47 时间
public static class PredicateBuilder
{
public static Expression<Func<T, bool>> True<T>()
{
return f => true;
}
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.OrElse(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.AndAlso(expr1.Body, invokedExpr), expr1.Parameters);
}
}
//使用
/*
Func<Model,bool> filter = valid;
Expressiojn<Func<Model,bool>> expf = PredicateBuilder.True<Model>().And(x=>filter(x));
List<Model> lst = DbContextInstance.Models.OrderBy(x=>x.id).Where(expf.Compile()).ToList();
public bool valid(Model m)
{
//check
return true or false;
}
*/
相关文章
- C# XML基本操作
- C# Timer控件学习之使用Timer解决按钮幂等性问题案例分享
- C#-DataGrid
- 开心档之C# 数组(Array)
- C#通过log4net进行异常记录详解编程语言
- 位c驱动下的Oracle 64位数据库快速开发(c# oracle 64)
- ASP.NET(C#)定时执行一段代码
- c#中返回文章发表的时间差的示例
- C#下载文件(TransmitFile/WriteFile/流方式)实例介绍
- 浅谈关于C#的垃圾回收机制
- c#典型工厂化实现实例
- .netC#实现任意List的笛卡尔乘积算法代码
- c#使用多线程的几种方式示例详解
- C#探秘系列(三)——StackTrace,Trim
- C#实现将汉字转化为2位大写的16进制Unicode的方法
- C#获取Word文档中所有表格的实现代码分享