In your code you don't use the expression.
Your code is like:
object selector = new object();
if (ascending)
return enumerables.OrderBy(z => selector);
else
return enumerables.OrderByDescending(z => selector);
Your code should be without expression:
Func<T, object> selector = (z) => z;
if (ascending)
return objects.OrderBy(selector);
else
return objects.OrderByDescending(selector);
However, if you really want an expression (for test purpose or anything else), compile it before:
Expression<Func<T, object>> selector = (z) => z;
var compiledExpression = selector.Compile();
if (ascending)
return objects.OrderBy(compiledExpression);
else
return objects.OrderByDescending(compiledExpression);