I managed to find one way, but it looks more workaround, the Marc version is much simpler. I will answer Marc as soon as I try it. Heres my workaround:
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); } }
and then in code
Expression<Func<object>> exp = () => dto.TotalColorPrints; var mod = new MemberModifier(); var modEx = mod.Modify(exp); result.OrderByAlias((Expression<Func<object>>)modEx)
MemberModifier is only an original prototype, it should be more general and independent of DepartmentConsumption and without hardcoded "TotalPages"
source share