private Expression CreateSimpleFilterExpression(object value, Expression fieldExpression)
        {
            if (this.PropertyInfo.PropertyType != typeof(DateTime) && this.PropertyInfo.PropertyType != typeof(DateTime?))
            {
                Expression expression = Expression.Equal(fieldExpression, Expression.Constant(value, this.PropertyInfo.PropertyType));

                return(expression);
            }


            DateTime dateTime = DateTimeFormater.Deserialize(value.ToString());

            if (this.DateFormat == null)
            {
                Expression expression = Expression.Equal(fieldExpression, Expression.Constant(dateTime));

                return(expression);
            }


            Expression currentExpression = null;

            if (this.DateTimeFormater.HasYear)
            {
                currentExpression = AddEqualsExpression(fieldExpression, currentExpression, DateTimeFormater.DateTime_Year, dateTime.Year);
            }
            if (this.DateTimeFormater.HasMonth)
            {
                currentExpression = AddEqualsExpression(fieldExpression, currentExpression, DateTimeFormater.DateTime_Month, dateTime.Month);
            }
            if (this.DateTimeFormater.HasDay)
            {
                currentExpression = AddEqualsExpression(fieldExpression, currentExpression, DateTimeFormater.DateTime_Day, dateTime.Day);
            }
            if (this.DateTimeFormater.HasHour)
            {
                currentExpression = AddEqualsExpression(fieldExpression, currentExpression, DateTimeFormater.DateTime_Hour, dateTime.Hour);
            }
            if (this.DateTimeFormater.HasMinute)
            {
                currentExpression = AddEqualsExpression(fieldExpression, currentExpression, DateTimeFormater.DateTime_Minute, dateTime.Minute);
            }
            if (this.DateTimeFormater.HasSecond)
            {
                currentExpression = AddEqualsExpression(fieldExpression, currentExpression, DateTimeFormater.DateTime_Second, dateTime.Second);
            }

            return(currentExpression);
        }
Example #2
0
        private Expression CreateFilterByDateTimeExpression(object value, Expression fieldExpression)
        {
            DateTime dateTime = DateTimeFormater.Deserialize(value.ToString());

            if (this.DateFormat == null)
            {
                return(Expression.Equal(fieldExpression, Expression.Constant(dateTime)));
            }


            Expression currentExpression = null;

            if (this.DateTimeFormater.HasYear)
            {
                currentExpression = AddEqualsExpression(fieldExpression, currentExpression, DateTimeFormater.DateTime_Year, dateTime.Year);
            }
            if (this.DateTimeFormater.HasMonth)
            {
                currentExpression = AddEqualsExpression(fieldExpression, currentExpression, DateTimeFormater.DateTime_Month, dateTime.Month);
            }
            if (this.DateTimeFormater.HasDay)
            {
                currentExpression = AddEqualsExpression(fieldExpression, currentExpression, DateTimeFormater.DateTime_Day, dateTime.Day);
            }
            if (this.DateTimeFormater.HasHour)
            {
                currentExpression = AddEqualsExpression(fieldExpression, currentExpression, DateTimeFormater.DateTime_Hour, dateTime.Hour);
            }
            if (this.DateTimeFormater.HasMinute)
            {
                currentExpression = AddEqualsExpression(fieldExpression, currentExpression, DateTimeFormater.DateTime_Minute, dateTime.Minute);
            }
            if (this.DateTimeFormater.HasSecond)
            {
                currentExpression = AddEqualsExpression(fieldExpression, currentExpression, DateTimeFormater.DateTime_Second, dateTime.Second);
            }

            return(currentExpression);
        }