Lambda动态条件查询
2012-11-12 16:45
274 查看
using System; using System.Linq; using System.Linq.Expressions; using System.Collections.Generic;
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); }
public IList<Memo> GetMemoList(string department, bool includePublic) { var filterExpression = PredicateBuilder.True<Memo>(); filterExpression = filterExpression.And(x => x.ID > 0); if (department != "") { filterExpression = filterExpression.And(x => x.Department == department); } if (includePublic) { var orExpression = PredicateBuilder.False<Memo>(); orExpression = orExpression.Or(x => x.IsPublic == true); filterExpression = filterExpression.Or(orExpression); } return db.Memo.Where(filterExpression.Compile()) .OrderByDescending(x => x.IsTop) .ThenByDescending(x => x.ID).ToList(); }
Ref:Dynamically Composing Expression Predicates
相关文章推荐
- [2014-12-30]如何动态构造Lambda表达式(动态构造Lambda查询条件表达式)
- linq里lambda写的join查询,并附加动态拼接的条件,条件为enum类型的查询
- Entity Framework4.1实现动态多条件查询、分页和排序
- Linq 动态表达式 多条件查询
- EF-Linq 将实体对象转换为搜索条件以进行通用动态查询
- JDBC的多条件动态查询
- LINQ动态条件查询(一)
- 一个比较复杂的IBatis 动态查询条件事例
- linq to ef 动态查询条件
- linq to sql的多条件动态查询
- asp.net中javascript动态添加查询条件
- Linq to Sql:N层应用中的查询(下) : 根据条件进行动态查询
- (转)动态多条件查询分页以及排序(一)--MVC与Entity Framework版url分页版
- Linq to Entity 动态拼接查询条件(重点是OR)
- Hibernate3动态条件查询
- linq动态多条件查询
- mybatis分页条件查询动态sql
- sql 在存储过程中的动态查询--就是当有的查询条件为空时就不加入查询
- EntityFramework动态多条件查询与Lambda表达式树
- 动态sql语句拼接查询条件