zoukankan      html  css  js  c++  java
  • c# -- 拼接lambda表达式

    添加一个类:

    public static class PredicateExtensions
        {
            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>> expression1, Expression<Func<T, bool>> expression2)
            {
                var invokedExpression = Expression.Invoke(expression2, expression1.Parameters.Cast<Expression>());
                return Expression.Lambda<Func<T, bool>>(Expression.Or(expression1.Body, invokedExpression), expression1.Parameters);
            }
    
            public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expression1, Expression<Func<T, bool>> expression2)
            {
                var invokedExpression = Expression.Invoke(expression2, expression1.Parameters.Cast<Expression>());
                return Expression.Lambda<Func<T, bool>>(Expression.And(expression1.Body, invokedExpression), expression1.Parameters);
            }
        }

    使用方法:

    public ActionResult Index(string keyword)
            {
                string name = "变形金刚";
    
                decimal price = 20000;
    
                DateTime dt = Convert.ToDateTime("2019 - 09 - 09");
    
                Expression<Func<Movies, bool>> expression = t => true;
    
                expression = expression.And(t => t.MName == name);
    
                expression = expression.And(t => t.MPrice == price);
    
                expression = expression.And(t => t.ShowTime == dt);
    
                var ds = db.Movies.Where(expression.Compile()).AsQueryable().ToList();
    
                return View(ds);
            }
  • 相关阅读:
    c语言数组指针
    (4)activiti工作流引擎之uel表达式
    (3)activiti流程的挂起和激活
    (2)java程序走一遍工作流activiti
    (1)activiti认识以及数据库和插件配置
    linux 下路由配置
    lvs-dr+keepalived
    LVS-DR 配置测试
    简单认识TCP/IP协议
    mysql 主从同步-读写分离
  • 原文地址:https://www.cnblogs.com/dcy521/p/11468768.html
Copyright © 2011-2022 走看看