Exemple #1
0
        /// <summary>
        /// Identifies conditions to include from a <see cref="WhereLinqExpression"/>.
        /// </summary>
        /// <param name="node">The binary expression to analyze.</param>
        /// <returns>The original binary expression.</returns>
        protected override Expression VisitBinary(BinaryExpression node)
        {
            switch (node.NodeType)
            {
            case ExpressionType.AndAlso:
            case ExpressionType.OrElse:
                Visit(node.Left);
                Visit(node.Right);
                return(node);

            default:
                var types = ExpressionSearcher.GetTypes(node);

                if (types.Contains(ExpressionType.AndAlso) || types.Contains(ExpressionType.OrElse))
                {
                    Visit(node.Left);
                    Visit(node.Right);
                    return(node);
                }
                else
                {
                    var visited = UnaryFixer.Fix(node);

                    Conditions.Add(visited);

                    return(node);
                }
            }
        }
Exemple #2
0
        protected override Expression VisitUnary(UnaryExpression node)
        {
            if (node.NodeType == ExpressionType.Not)
            {
                return(UnaryFixer.Fix(node));
            }

            return(base.VisitUnary(node));
        }