public static Func <Expression, Expression, Expression> GetCompareExpression(this EnumFilterCompare compare)
        {
            Func <Expression, Expression, Expression> expr = Expression.Equal;

            switch (compare)
            {
            case EnumFilterCompare.LT:
                expr = Expression.LessThan;
                break;

            case EnumFilterCompare.LTE:
                expr = Expression.LessThanOrEqual;
                break;

            case EnumFilterCompare.GT:
                expr = Expression.GreaterThan;
                break;

            case EnumFilterCompare.GTE:
                expr = Expression.GreaterThanOrEqual;
                break;

            case EnumFilterCompare.Begins:
                expr = (Expression exp1, Expression exp2) =>
                {
                    // увы с case ignore орм не может составить запрос и выполняет фильтрацию после запроса
                    // но мы можем вызвать ToLower(), но это тоже не вариант ибо индексы идут лесом, а хотя индексы и так идут лесом
                    var meth = typeof(string).GetMethod("StartsWith", new Type[] { typeof(string) /*, typeof(StringComparison)*/ });
                    var func = Expression.Call(exp1, meth, exp2 /*, Expression.Constant(StringComparison.OrdinalIgnoreCase, typeof(StringComparison))*/);
                    return(func);
                };
                break;

            case EnumFilterCompare.Ends:
                // todo
                break;

            case EnumFilterCompare.Include:
                // todo
                break;
            }
            return(expr);
        }
        private void _init(Controller2Garin controller, string title, string placeholder, EnumHtmlType htmlType, bool isRequired, bool needTranslate, bool isMultiple,
                           string propertyName, int priority, List <string> Default, EnumFilterCompare compare = EnumFilterCompare.Equals, string format = null)
        {
            Controller    = controller;
            Logger        = controller.LoggerFactory.CreateLogger(GetType().FullName);
            HtmlType      = htmlType;
            PropertyName  = propertyName;
            Priority      = priority;
            IsRequired    = isRequired;
            NeedTranslate = needTranslate;
            IsMultiple    = isMultiple;
            Title         = title;
            Placeholder   = placeholder;
            Compare       = compare;
            Format        = format;

            //this.Default = Default;

            this.Default = ParseValuesFromStrings(Default);
        }
 public Field(Controller2Garin controller, string title, string placeholder, EnumHtmlType htmlType, bool isRequired, bool needTranslate, bool isMultiple,
              string propertyName, int priority, List <string> Default, EnumFilterCompare compare = EnumFilterCompare.Equals, string format = null)
 {
     _init(controller, title, placeholder, htmlType, isRequired, needTranslate, isMultiple,
           propertyName, priority, Default, compare, format);
 }