Предположим, у меня есть что-то вроде
Expression<Func<SomeType, DateTime>> left = x => x.SomeDateProperty;
Expression<Func<SomeType, DateTime>> right = x => dateTimeConstant;
var binaryExpression = Expression.GreaterThan(left, right);
Expression<Func<SomeType, bool>> predicate =
x => x.SomeDateProperty> dateTimeConstant;
1) Как я могу заменить правую часть назначения последней строки на что-то, что использует binaryExpression? var predicate = x => binaryExpression; не работает.
2) right всегда постоянное, не обязательно DateTime.Now. Может ли это быть более простым типом Expression? Например, это не зависит от SomeType, это просто константа.
3) Если у меня есть GreaterThan как string, есть ли способ получить из этой строки метод с тем же именем в Expression? В общем случае, если имя метода сравнения задано как string, как я могу перейти от строки к фактическому вызову метода с тем же именем в классе Expression?
Он должен работать с LINQ для Entities, если это имеет значение.