Вы должны будете взять лямбда-выражение в виде дерева выражений, например:
protected virtual IQueryable<TaskView> AddTaskDuePredicate(
Expression<Func<TaskView, DateTime>> projection,
DateCriteria dateCriterion,
IQueryable<TaskView> taskSummary)
Тогда вам нужно будет построить Expression<Func<TaskView, bool>>
из этой проекции, используя такие вещи, как Expression.GreaterThan
и Expression.Lambda
.Вверху моей головы:
ParameterExpression p = projection.Parameters[0];
Expression constant = Expression.Constant(dateCriterion.Value1);
Expression comparison = Expression.GreaterThan(projection.Body, constant);
Expression lambda = Expression.Lambda<Func<TaskView, bool>>
(comparison, p);
taskSummary = taskSummary.Where(lambda);
Это полностью все же не проверено.Очевидно, после того, как у вас это сработает для GreaterThan
, остальное должно быть относительно easy ...