public async Task <PagedList <Owner> > IndexRequest <T>(IndexRequestModel request) where T : class { var pagedList = new PagedList <Owner>(); var list = new List <Owner>(); int count = await _service.Count <Owner>();; var data = Enumerable.Empty <Owner>(); var query = Enumerable.Empty <Owner>(); var searched = false; // Search if (!string.IsNullOrEmpty(request.SearchString)) { query = await OwnerDataFormatting.Search(_service.GetAll <Owner>(), request.SearchString); searched = true; } // Sort if (!string.IsNullOrEmpty(request.SortVariable)) { if (searched) { data = OwnerDataFormatting.Sort <Owner>(query, request.SortVariable); } else { data = OwnerDataFormatting.Sort <Owner>(_service.GetAll <Owner>(), request.SortVariable); } foreach (var item in data) { list.Add(item); } pagedList.Initialize(list.Skip(request.Page * request.PageSize).Take(request.PageSize), request, count); } // Index request without modifiers else { data = OwnerDataFormatting.Sort <Owner>(_service.GetAll <Owner>(), "Date_desc"); foreach (var item in data) { list.Add(item); } pagedList.Initialize(list.Skip(request.Page * request.PageSize).Take(request.PageSize), request, count); } return(pagedList); }