When you compile and invoke this expression, what is the result?
var p = Expression.Parameter(typeof(string), "s");
var body = Expression.Property(p, "Length");
var lambda = Expression.Lambda<Func<string, int>>(body, p);
var f = lambda.Compile();
Console.WriteLine(f(null));