/// <summary> /// Handles OrderBy. /// </summary> /// <param name="expression"></param> /// <returns></returns> protected override Expression VisitMethodCall(MethodCallExpression expression) { if (expression.Method.Name == "OrderBy" || expression.Method.Name == "ThenBy") { var memberExp = ((expression.Arguments[1] as UnaryExpression).Operand as LambdaExpression).Body as MemberExpression; _sortBuilder.Order(memberExp.Expression.Type, memberExp.Member.Name); } if (expression.Method.Name == "OrderByDescending" || expression.Method.Name == "ThenByDescending") { var memberExp = ((expression.Arguments[1] as UnaryExpression).Operand as LambdaExpression).Body as MemberExpression; _sortBuilder.OrderByDescending(memberExp.Expression.Type, memberExp.Member.Name); } return(base.VisitMethodCall(expression)); }
public virtual SortBuilder <T> ThenByDescending(Expression <Func <T, object> > sortExpression) { SortBuilder.OrderByDescending(sortExpression); return(SortBuilder); }