Я хочу составить результаты двух выражений Linq. Они существуют в виде
Expression<Func<T, bool>>
Таким образом, два, которые я хочу составить, по сути являются делегатами параметра (типа T), которые оба возвращают логическое значение. Результат, который я хотел бы составить, будет логической оценкой логических значений. Я бы, вероятно, реализовал его как метод расширения, поэтому мой синтаксис был бы примерно таким:
Expression<Func<User, bool>> expression1 = t => t.Name == "steve";
Expression<Func<User, bool>> expression2 = t => t.Age == 28;
Expression<Func<User, bool>> composedExpression = expression1.And(expression2);
И позже в моем коде я хочу оценить составленное выражение
var user = new User();
bool evaluated = composedExpression.Compile().Invoke(user);
Я покопался с несколькими разными идеями, но боюсь, что это сложнее, чем я надеялся. Как это делается?