/// <summary> /// Initializes a new instance of the ExpressionParserBase class. /// </summary> /// <param name="propertyName"></param> /// <param name="comparisonType"></param> /// <param name="ignoreCase"></param> protected ExpressionParserBase(String propertyName, SqlComparisonType comparisonType, bool ignoreCase) { PropertyName = propertyName; ComparisonType = comparisonType; IgnoreCase = ignoreCase; }
/// <summary> /// Initializes a new instance of the ParameterizedSqlExpressionParser class. /// </summary> /// <param name="propertyName"></param> /// <param name="comparisonType"></param> /// <param name="ignoreCase"></param> public ParameterizedSqlExpressionParser(String propertyName, SqlComparisonType comparisonType, bool ignoreCase) : base(propertyName, comparisonType, ignoreCase) { }
/// <summary> /// Initializes a new instance of the ParameterizedSqlExpressionParser class. /// </summary> /// <param name="propertyName"></param> /// <param name="comparisonType"></param> public ParameterizedSqlExpressionParser(String propertyName, SqlComparisonType comparisonType) : this(propertyName, comparisonType, false) { }
/// <summary> /// Converts the search text into a valid search expression. /// </summary> /// <param name="propertyName"></param> /// <param name="value"></param> /// <param name="ignoreCase"></param> /// <returns></returns> protected virtual String WrapWithSQL(String propertyName, String value, bool ignoreCase) { SqlComparisonType compare = ComparisonType; String sql = String.Empty; // check for wildcards if (String.IsNullOrEmpty(value)) { return(sql); } else if (value.Equals(SqlUtil.STAR)) { compare = SqlComparisonType.Like; value = SqlUtil.WILD; } else if (value.StartsWith(SqlUtil.STAR) && value.EndsWith(SqlUtil.STAR)) { compare = SqlComparisonType.Contains; value = value.Substring(1, value.Length - 2); } else if (value.EndsWith(SqlUtil.STAR)) { compare = SqlComparisonType.StartsWith; value = value.Substring(0, value.Length - 1); } else if (value.StartsWith(SqlUtil.STAR)) { compare = SqlComparisonType.EndsWith; value = value.Substring(1, value.Length - 1); } else { compare = SqlComparisonType.Equals; } // make sure there are no embeded wildcards if (value.IndexOf(SqlUtil.STAR) > -1) { value = value.Replace(SqlUtil.STAR, SqlUtil.WILD); if (compare == SqlComparisonType.Equals) { compare = SqlComparisonType.Like; } } // check for actual wild card character if (compare == SqlComparisonType.Equals && value.IndexOf(SqlUtil.WILD) > -1) { compare = SqlComparisonType.Like; } switch (compare) { case SqlComparisonType.Contains: sql = Contains(propertyName, value, ignoreCase); break; case SqlComparisonType.StartsWith: sql = StartsWith(propertyName, value, ignoreCase); break; case SqlComparisonType.EndsWith: sql = EndsWith(propertyName, value, ignoreCase); break; case SqlComparisonType.Like: sql = Like(propertyName, value, ignoreCase); break; default: sql = Equals(propertyName, value, ignoreCase); break; } return(sql); }