private static ConstantExpression GetConstantExpression(string value, SearchableType type = SearchableType.String) { switch (type) { case SearchableType.String: return(Expression.Constant(value)); case SearchableType.Int32: return(Expression.Constant(int.Parse(value))); case SearchableType.Boolen: return(Expression.Constant(bool.Parse(value))); default: return(Expression.Constant(value)); } }
public static string ToSearchable(this string value, SearchableType type = SearchableType.None, string replacementString = " ") { if (value == null) { return(null); } var result = new StringBuilder(); switch (type) { // extract only digit case SearchableType.Digit: foreach (var c in value) { if (char.IsDigit(c)) { result.Append(c); } } while (result.Length > 1 && result[0] == '0') { result.Remove(0, 1); } break; // extract only digit or Letter case SearchableType.LetterOrDigit: foreach (var c in value) { if (char.IsLetterOrDigit(c)) { result.Append(c); } } return(ToSearchable(result.ToString())); case SearchableType.LetterOrDigitWithReplacement: foreach (var c in ToSearchable(value)) { if (char.IsLetterOrDigit(c)) { result.Append(c); } else { result.Append(replacementString); } } break; default: foreach (var c in value.Normalize(NormalizationForm.FormD)) { if (char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark) { result.Append(char.ToUpper(c)); } } break; } return(result.ToString()); }
public SearchableAttribute(SearchableType type = SearchableType.None) => Type = type;
public SearchableInfo(SearchableType searchableType, string columnName) { SearchableType = searchableType; ColumnName = columnName; }