Ответ 1
Я предварительно использую следующее, но не знаю, является ли это предпочтительным методом:
public static object Evaluate(Expression e)
{
//A little optimization for constant expressions
if (e.NodeType == ExpressionType.Constant)
return ((ConstantExpression)e).Value;
return Expression.Lambda(e).Compile().DynamicInvoke();
}