コード例 #1
0
ファイル: FilterTestsBase.cs プロジェクト: krreddy123/appcode
        protected virtual List <Customer> ExecuteQuery <TValue>(RuleOperator op, Expression <Func <Customer, TValue> > left, object right)
        {
            var paramExpr = Expression.Parameter(typeof(Customer), "it");
            var valueExpr = ExpressionHelper.CreateValueExpression(left.Body.Type, right); // Expression.Constant(right)
            var expr      = op.GetExpression(left.Body, valueExpr, true);
            var predicate = ExpressionHelper.CreateLambdaExpression(paramExpr, expr);

            var result = _customers.AsQueryable().Where(predicate).Cast <Customer>().ToList();

            return(result);
        }
コード例 #2
0
        public override Expression GetExpression(RuleOperator op, Expression valueExpression, bool liftToNull)
        {
            // Create the Any()/All() lambda predicate (the part within parentheses)
            var predicate = ExpressionHelper.CreateLambdaExpression(
                Expression.Parameter(typeof(TPredicate), "it2"),
                op.GetExpression(PredicateExpression.Body, valueExpression, liftToNull));

            var body = Expression.Call(
                typeof(Enumerable),
                MethodName,
                // .Any/All<TPredicate>()
                new[] { typeof(TPredicate) },
                // 0 = left collection path: x.Orders.selectMany(o => o.OrderItems)
                // 1 = right Any/All predicate: y => y.ProductId = 1
                new Expression[]
            {
                MemberExpression.Body,
                predicate
            });

            return(body);
        }
コード例 #3
0
 public virtual Expression GetExpression(RuleOperator op, Expression valueExpression, bool liftToNull)
 {
     return(op.GetExpression(MemberExpression.Body, valueExpression, liftToNull));
 }