Q:

How to evaluate a System. Linq. Expressions. Expression

What is the correct or robust way to evaluate a System. Linq. Expressions. Expression to obtain a value (object)? 

A:

I'm tentatively using the following, but don't know if it's the preferred method:
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();
}

