protected virtual void VisitStringLiteralExpression(StringBuilder sb, BinaryStringOperator binaryStringOperator, LiteralExpression <string> expression) { if (string.IsNullOrEmpty(expression.Value)) { sb.Append(" NULL "); return; } string v; switch (binaryStringOperator) { case BinaryStringOperator.StartsWith: v = expression.Value + "%"; break; case BinaryStringOperator.EndsWith: v = "%" + expression.Value; break; case BinaryStringOperator.Contains: v = "%" + expression.Value + "%"; break; case BinaryStringOperator.Equals: case BinaryStringOperator.NotEquals: default: v = expression.Value; break; } sb.Append(CreateParameter(v).ParameterName); }
protected virtual string GetBinaryStringExpressionString(BinaryStringOperator binaryStringOperator, Expression right) { if (right is LiteralExpression && (Equals(null, ((LiteralExpression)right).Value) || Equals(string.Empty, ((LiteralExpression)right).Value))) { switch (binaryStringOperator) { case BinaryStringOperator.Equals: return(" IS "); case BinaryStringOperator.NotEquals: return(" IS NOT "); case BinaryStringOperator.Contains: case BinaryStringOperator.EndsWith: case BinaryStringOperator.StartsWith: default: break; } } switch (binaryStringOperator) { case BinaryStringOperator.Equals: return(" = "); case BinaryStringOperator.NotEquals: return(" <> "); case BinaryStringOperator.Contains: case BinaryStringOperator.EndsWith: case BinaryStringOperator.StartsWith: default: return(" LIKE "); } }