Example #1
0
        public Expression <TraceLogFilterPredicate> CreatePredicateExpr(TraceLogFilter filter)
        {
            var enabled       = filter.Conditions.Where(x => x.IsEnabled).ToList();
            var includedConds = enabled.Where(x => x.Action == FilterConditionAction.Include);
            var excludedConds = enabled.Where(x => x.Action == FilterConditionAction.Exclude);

            var includeExpr = ExpressionEx.OrElse(includedConds.Select(CreateComparisonExpr), true);
            var excludeExpr = ExpressionEx.OrElse(excludedConds.Select(CreateComparisonExpr), false);
            var filterExpr  = Expression.AndAlso(includeExpr, Expression.Not(excludeExpr));

            return(CreateLambda(filterExpr));
        }
Example #2
0
        Expression INodeVisitor <Expression, ExpressionNodeVisitorInput> .VisitComplexNode(ComplexNode node, ExpressionNodeVisitorInput input)
        {
            Expression expression = null;

            foreach (var childNode in node.Nodes)
            {
                expression =
                    expression == null
                        ? childNode.Accept(this, input)
                        : childNode.LogicalOperator == LogicalOperator.And
                            ? ExpressionEx.AndAlso(expression, childNode.Accept(this, input))
                            : ExpressionEx.OrElse(expression, childNode.Accept(this, input));
            }

            return(expression);
        }