示例#1
0
        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));
            }
        }
示例#2
0
        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());
        }
示例#3
0
 public SearchableAttribute(SearchableType type = SearchableType.None) => Type = type;
示例#4
0
 public SearchableInfo(SearchableType searchableType, string columnName)
 {
     SearchableType = searchableType;
     ColumnName     = columnName;
 }