Beispiel #1
0
        private Expression VisitBinary(ODataBinaryExpression node)
        {
            var left  = Visit(node.Left);
            var right = Visit(node.Right);

            ExpressionHelper.BinaryExpressionArgumentConverter(ref left, ref right, node.NodeType);

            if (left.Type == typeof(string) || right.Type == typeof(string))
            {
                switch (node.NodeType)
                {
                case ExpressionType.GreaterThan:
                case ExpressionType.GreaterThanOrEqual:
                case ExpressionType.LessThan:
                case ExpressionType.LessThanOrEqual:
                    left  = Expression.Call(StringCompareMethodInfo, new[] { left, right, OrdinalStringComparisonConstant });
                    right = ZeroConstant;
                    break;
                }
            }

            return(Expression.MakeBinary(node.NodeType, left, right));
        }