代码之家  ›  专栏  ›  技术社区  ›  OrcusZ

使用NET Core和EF Core构建谓词

  •  1
  • OrcusZ  · 技术社区  · 6 年前

    很快的问题:

    我正试图创建这样的谓词生成器:

        var predicate = PredicateBuilder.False<MyObject>();
    

    但似乎在 净核心 以及 EF核心 .

    我是不是丢了包裹什么的?

    1 回复  |  直到 6 年前
        1
  •  3
  •   SpruceMoose    6 年前

    你确定 PredicateBuilder 你使用的不是自定义类?一个 谓词生成器 作为 LINQKit 但是 source is also available here 具体如下:

    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);
        }
    }