private IEnumerable <CategoryListViewModel> OrderData(int column, DtOrderDir orderDirection, List <CategoryListViewModel> categories) { switch (column) { case 1: return(orderDirection == DtOrderDir.Asc ? categories.OrderBy(x => x.Name) : categories.OrderByDescending(x => x.Name)); default: return(orderDirection == DtOrderDir.Asc ? categories.OrderBy(x => x.Name) : categories.OrderByDescending(x => x.Name)); } }
public static IQueryable <T> OrderByDynamic <T>( this IQueryable <T> query, string orderByMember, DtOrderDir ascendingDirection) { var param = Expression.Parameter(typeof(T), "c"); var body = orderByMember.Split('.').Aggregate <string, Expression>(param, Expression.PropertyOrField); var queryable = ascendingDirection == DtOrderDir.Asc ? (IOrderedQueryable <T>)Queryable.OrderBy(query.AsQueryable(), (dynamic)Expression.Lambda(body, param)) : (IOrderedQueryable <T>)Queryable.OrderByDescending(query.AsQueryable(), (dynamic)Expression.Lambda(body, param)); return(queryable); }