zoukankan      html  css  js  c++  java
  • Expression多条件筛选

    使用场景:多条件筛选,不确定条件的个数时,可选择此种方式;

    扩展类:

     public static class ExpLinqExpressions
        {
            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.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); 
            }
        }
    

      

    使用样例:

       #region 多条件筛选
                ///查询数据库的仓储类
                ItestRepository test = new TestRepository();
                test.FindAll(d => d.Id == 1);
                Expression<Func<Test, bool>> pre;
                pre = s => s.Id == 1;
                int money = 10;
                if (money > 0)
                {
                    pre = pre.And(d => d.Money == money);
                }
    
                var vlus = test.FindAll(pre.Compile());
                #endregion
    

      

  • 相关阅读:
    mybatis中的动态语句中多条件or如何书写
    安装kibana的docker版
    安装elasticsearch的docker版
    git回滚push过的代码
    java中支付宝支付
    05 docker镜像删除
    远程仓库的搭建
    本地git工作流
    创建本地仓库
    git安装
  • 原文地址:https://www.cnblogs.com/SHa-Jazy/p/15508939.html
Copyright © 2011-2022 走看看