Predicate build with NET Core and EF Core

后端 未结 2 1294
[愿得一人]
[愿得一人] 2021-01-13 11:18

Very quick question :

I\'m trying to create a predicate builder like this :

    var predicate = PredicateBuilder.False();

相关标签:
2条回答
  • 2021-01-13 11:34

    Are you sure that the PredicateBuilder you were using was not a custom class? A PredicateBuilder is shipped as part of LINQKit but the source is also available here as follows:

    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);
        }
    }
    
    0 讨论(0)
  • 2021-01-13 11:44

    Here is also a solution, it can parse a string expression to lambda expression like this

    Expression<Func<Entity, bool>> predicate 
        = Interpreter.ParsePredicate<Entity>("id = 1 and name='Test'").Result;
    

    Refer to https://github.com/linhnle/Kkts.Expressions

    0 讨论(0)
提交回复
热议问题