public static PagedResults <T> ToPagedList <T>(this IQueryable <T> source, PagedParamModel param, Expression <Func <T, bool> > filter = null, Func <IQueryable <T>, IOrderedQueryable <T> > orderBy = null) where T : class { IQueryable <T> query = source; int TotalItems = query.Count(); if (filter != null) { query = query.Where(filter); } int recordsFiltered = query.Count(); if (orderBy != null) { query = orderBy(query); } query = query.Skip(param.PageSize * (param.PageNumber - 1)).Take(param.PageSize); var result = new PagedResults <T>() { PageNumber = param.PageNumber, PageSize = param.PageSize, TotalNumberOfPages = (int)Math.Ceiling(recordsFiltered / (double)param.PageSize), TotalNumberOfRecords = TotalItems, TotalRcordsFiltered = recordsFiltered, Users = query.ToList() }; return(result); }
public IActionResult GetPage(int pageNumber = 1, int pageSize = 1, string searchFirstName = "") { PagedParamModel param = new PagedParamModel() { PageNumber = pageNumber, PageSize = pageSize, searchValue = searchFirstName }; Expression <Func <User, bool> > searchFunc = (s => s.FirstName.ToLower().Contains(searchFirstName.ToLower())); var users = _context.Users.Include("UserSkills").Include("UserSkills.Skill").ToPagedList(param, filter: !string.IsNullOrEmpty(searchFirstName) ? searchFunc : null, orderBy: null); var results = _map.Map <PageResultViewModel>(users); return(Json(Ok(results))); }