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)); }