protected override SqlScalarExpression VisitImplicit(MethodCallExpression methodCallExpression, TranslationContext context) { if (methodCallExpression.Arguments.Count == 1) { SqlScalarExpression left = ExpressionToSql.VisitScalarExpression(methodCallExpression.Object, context); SqlScalarExpression right = ExpressionToSql.VisitScalarExpression(methodCallExpression.Arguments[0], context); return(SqlBinaryScalarExpression.Create(SqlBinaryScalarOperatorKind.Equal, left, right)); } if (methodCallExpression.Arguments.Count == 2) { SqlScalarExpression left = ExpressionToSql.VisitScalarExpression(methodCallExpression.Object, context); SqlScalarExpression right = ExpressionToSql.VisitScalarExpression(methodCallExpression.Arguments[0], context); SqlScalarExpression caseSensitivity = SqlStringWithComparisonVisitor.GetCaseSensitivityExpression(methodCallExpression.Arguments[1]); return(SqlFunctionCallScalarExpression.CreateBuiltin( SqlFunctionCallScalarExpression.Names.StringEquals, left, right, caseSensitivity)); } return(null); }
protected override SqlScalarExpression VisitImplicit(MethodCallExpression methodCallExpression, TranslationContext context) { if (methodCallExpression.Arguments.Count == 2) { SqlScalarExpression haystack = ExpressionToSql.VisitScalarExpression(methodCallExpression.Object, context); SqlScalarExpression needle = ExpressionToSql.VisitScalarExpression(methodCallExpression.Arguments[0], context); SqlScalarExpression caseInsensitive = SqlStringWithComparisonVisitor.GetCaseInsensitiveExpression(methodCallExpression.Arguments[1]); return(SqlFunctionCallScalarExpression.CreateBuiltin("CONTAINS", haystack, needle, caseInsensitive)); } return(null); }