System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.TranslateLike C# (CSharp) Method

TranslateLike() private method

Helper method for String.Like object.Like(likeExpression[, escapeCharacter]) is translated to: object like likeExpression [escape escapeCharacter]
private TranslateLike ( MethodCallExpression call ) : DbExpression
call System.Linq.Expressions.MethodCallExpression
return DbExpression
        private DbExpression TranslateLike(MethodCallExpression call)
        {
            char dummyEscapeChar;
            var providerSupportsEscapingLikeArgument = ProviderManifest.SupportsEscapingLikeArgument(out dummyEscapeChar);

            var inputExpression = call.Arguments[0];
            var patternExpression = call.Arguments[1];
            var escapeExpression = (call.Arguments.Count > 2 ? call.Arguments[2] : null);
            
            if (!providerSupportsEscapingLikeArgument && (escapeExpression != null))
            {
                throw new ProviderIncompatibleException(Strings.ProviderDoesNotSupportEscapingLikeArgument);
            }

            var translatedPatternExpression = TranslateExpression(patternExpression);
            var translatedEscapeExpression = (escapeExpression != null ? TranslateExpression(escapeExpression) : null);
            var translatedInputExpression = TranslateExpression(inputExpression);

            return escapeExpression != null ?
                translatedInputExpression.Like(translatedPatternExpression, translatedEscapeExpression) :
                translatedInputExpression.Like(translatedPatternExpression);
        }