public PageInfo(int pageSize = 10, int pageNo = 1, string orderBy = null, EnumCommon.SortDirection direction = 0) { PageSize = pageSize; PageNo = pageNo; OrderBy = orderBy; Direction = direction; Fields = new List <string>(); Fieldvalues = new List <string>(); }
public ListFeedback <T> GetAll(PageInfo pageInfo, string sortColumn, EnumCommon.SortDirection direction) { var total = Dbset.Count(); var query = Dbset.OrderByCustom(sortColumn, direction) .Skip((pageInfo.PageNo - 1) * pageInfo.PageSize) .Take(pageInfo.PageSize); List <T> groups = new List <T>(); foreach (var item in query) { groups.Add(item); } return(new ListFeedback <T>(true, groups, total)); }
// <summary>Orders the sequence by specific column and direction.</summary> /// <param name="query">The query.</param> /// <param name="sortColumn">The sort column.</param> /// <param name="direction">asc/desc</param> public static IQueryable <T> OrderByCustom <T>(this IQueryable <T> query, string sortColumn, EnumCommon.SortDirection direction) { var methodName = string.Format("OrderBy{0}", direction == EnumCommon.SortDirection.Ascending ? "" : "descending"); var parameter = Expression.Parameter(query.ElementType, "p"); MemberExpression memberAccess = null; foreach (var property in sortColumn.Split('.')) { memberAccess = MemberExpression.Property(memberAccess ?? (parameter as Expression), property); } var orderByLambda = Expression.Lambda(memberAccess, parameter); var result = Expression.Call( typeof(Queryable), methodName, new[] { query.ElementType, memberAccess.Type }, query.Expression, Expression.Quote(orderByLambda)); return(query.Provider.CreateQuery <T>(result)); }