Мне удалось найти один путь самому, но это выглядит больше обходного пути, версия Марка намного проще. Я приму ответ Марка, как только опробую его. Вот мой обходной путь:
public class MemberModifier : ExpressionVisitor
{
public Expression Modify(Expression expression)
{
return Visit(expression);
}
protected override Expression VisitMember(MemberExpression node)
{
var t = typeof (DepartmentPaperConsumption);
var memberInfo = t.GetMember("TotalPages")[0];
return Expression.MakeMemberAccess(node.Expression, memberInfo);
}
}
и затем в коде
Expression<Func<object>> exp = () => dto.TotalColorPrints;
var mod = new MemberModifier();
var modEx = mod.Modify(exp);
result.OrderByAlias((Expression<Func<object>>)modEx)
MemberModifier является только необработанным прототипом, он должен быть более общим и не зависеть от DepartmentConsidity и без жестко заданных «TotalPages»