Предположим, у меня есть что-то вроде
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, если это имеет значение.