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