/// <summary> /// Advanced option of GetPaged /// It automatically returns mapped result and it does not return the query, since it is already resolved /// </summary> /// <typeparam name="T"></typeparam> /// <typeparam name="U"></typeparam> /// <param name="query"></param> /// <param name="pagedRequest"></param> /// <returns></returns> public async Task <PagedResult <U> > GetPaged <T, U>(IQueryable <T> query, PagedRequest <T, U> pagedRequest) where T : class, new() where U : class, new() { Type objectType = query.FirstOrDefault()?.GetType(); if (objectType != null) { var result = new PagedResult <T> { PageIndex = pagedRequest.PageIndex, PageSize = pagedRequest.PageSize, }; if (pagedRequest.PropertyFilterConfigs != null && pagedRequest.PropertyFilterConfigs.Any(pfc => pfc.SortDirection.HasValue)) { query = SortObject(query, pagedRequest.PropertyFilterConfigs); } if (pagedRequest.Where != null) { query = FilterObject(query, pagedRequest); } if (!string.IsNullOrEmpty(pagedRequest.SearchQuery)) { query = SearchObject(query, pagedRequest); } var resultQuery = ApplyPagination(query, pagedRequest); result.RowCount = query.Count(); result.PageCount = (int)Math.Ceiling((double)result.RowCount / pagedRequest.PageSize); return(await Task.FromResult(result.TransformResult(pagedRequest, resultQuery))); } return(new PagedResult <U>() { Results = new List <U>() }); }
public async Task <PagedResult <U> > GetPaged <T, U>(IQueryable <T> query, PagedRequest <T, U> pagedRequest) where T : class, new() where U : class, new() { Type objectType = query.FirstOrDefault()?.GetType(); if (objectType != null) { var result = new PagedResult <T> { PageIndex = pagedRequest.PageIndex, PageSize = pagedRequest.PageSize, }; if (pagedRequest.PropertyFilterConfigs != null && pagedRequest.PropertyFilterConfigs.Any(pfc => pfc.SortDirection.HasValue)) { query = SortObject(query, pagedRequest.PropertyFilterConfigs); } if (pagedRequest.Where != null) { query = FilterObject(query, pagedRequest); } var resultQuery = ApplyPagination(query, pagedRequest); result.RowCount = query.Count(); result.PageCount = (int)Math.Ceiling((double)result.RowCount / pagedRequest.PageSize); result.Results = pagedRequest.ReturnQueryOnly ? new List <T>() : await Task.FromResult(resultQuery.ToList()); result.ResultQuery = pagedRequest.ReturnResultsOnly ? null : resultQuery; return(result.TransformResult(pagedRequest.MappingFunction)); } return(new PagedResult <U> { Results = new List <U>(), ResultQuery = null }); }
public static async Task <PagedResult <U> > GetFiltered <T, U>(this IQueryable <T> query, PagedRequest <T, U> pagedRequest) where T : class, new() where U : class, new() { Type objectType = query.FirstOrDefault()?.GetType(); if (objectType != null) { var result = new PagedResult <T> { PageIndex = pagedRequest.PageIndex, PageSize = pagedRequest.PageSize, }; if (pagedRequest.Sorting != null && pagedRequest.Sorting.Keys.Count > 0) { query = SortObject(pagedRequest.Sorting, query); } if (pagedRequest.PropertyFilterConfigs != null && pagedRequest.PropertyFilterConfigs.Any()) { query = query.FilterObject(pagedRequest); } result.RowCount = query.Count(); result.PageCount = (int)Math.Ceiling((double)result.RowCount / pagedRequest.PageSize); result.Results = pagedRequest.ReturnQueryOnly ? new List <T>() : await Task.FromResult(query.ToList()); result.ResultQuery = pagedRequest.ReturnResultsOnly ? null : query; return(result.TransformResult(pagedRequest.MappingFunction)); } return(new PagedResult <U> { Results = new List <U>(), ResultQuery = null }); }