Exemplo n.º 1
0
        public Expression <Func <TModel, bool> > GenerateExpression()
        {
            if (Type.GetTypeCode(ExpectedValueType) != TypeCode.DateTime)
            {
                return(FilterType.GenerateExpression <TModel>(Column.GetColumnPropertyName(), FilterValue));
            }

            if (Column.DateTimeFormat.Equals(DateTimeFormat.Date))
            {
                return(FilterType.GenerateExpression <TModel>($"{Column.GetColumnPropertyName()}.Date", FilterValue?.Date));
            }

            if (!Column.DateTimeFormat.Equals(DateTimeFormat.DateHourMinute))
            {
                return(Column.DateTimeFormat.Equals(DateTimeFormat.DateHourMinuteSecond)
                    ? FilterType.GenerateExpression <TModel>(Column.GetColumnPropertyName(), FilterValue)
                    : FilterType.GenerateExpression <TModel>(Column.GetColumnPropertyName(), FilterValue));
            }

            var dateExpression   = FilterType.GenerateExpression <TModel>($"{Column.GetColumnPropertyName()}.Date", FilterValue?.Date);
            var hourExpression   = FilterType.GenerateExpression <TModel>($"{Column.GetColumnPropertyName()}.Hour", FilterValue?.Hour);
            var minuteExpression = FilterType.GenerateExpression <TModel>($"{Column.GetColumnPropertyName()}.Minute", FilterValue?.Minute);
            var p1 = PredicateBuilder.And(dateExpression, hourExpression);

            return(PredicateBuilder.And(p1, minuteExpression));
        }