示例#1
0
        public virtual async Task <PagedList <TEntity> > FindAllIncluding(IPagingFilter filter, bool asNoTracking = true,
                                                                          params Expression <Func <TEntity, object> >[] includeProperties)
        {
            var query = GetFindAllIncludingQueryable(asNoTracking, includeProperties);

            return(await query.Paginate(filter));
        }
示例#2
0
        public virtual async Task <PagedList <TEntity> > FindAll(IPagingFilter filter,
                                                                 Expression <Func <TEntity, bool> > predicate, bool asNoTracking = true)
        {
            var query = GetFindAllQueryable(predicate, asNoTracking);

            return(await query.Paginate(filter));
        }
 public PagingFilter(IPagingFilter filter)
 {
     if (filter == null)
     {
         return;
     }
     Page    = filter.Page;
     PerPage = filter.PerPage;
 }
示例#4
0
 public PagingFilter(IPagingFilter filter)
 {
     if (filter == null)
     {
         return;
     }
     Page = filter.Page;
     PerPage = filter.PerPage;
 }
示例#5
0
 public MqPagingFilter(IPagingFilter filter)
 {
     if (filter == null)
     {
         return;
     }
     PerPage = filter.PerPage;
     if (filter is MqPagingFilter)
     {
         Previous = ((MqPagingFilter)filter).Previous;
     }
 }
 public static IQueryable <T> SetPaging <T>(this IQueryable <T> query, IPagingFilter filter)
 {
     if (filter.Page < 1 || filter?.Page == null)
     {
         filter.Page = 0;
     }
     else
     {
         filter.Page--;
     }
     if (filter.Size < 1 || filter?.Size == null)
     {
         filter.Page = 100;
     }
     return(query.Skip(filter.Page * filter.Size).Take(filter.Size));
 }
 public static IQueryable <T> SetOrdering <T>(this IQueryable <T> query, IPagingFilter filter)
 {
     if (filter.Sorts is null)
     {
         return(query);
     }
     foreach (var item in filter.Sorts)
     {
         if (query.IsOrdered())
         {
             query = ((IOrderedQueryable <T>)query).ThenBy(item);
         }
         else
         {
             query = query.OrderBy(item);
         }
     }
     return(query);
 }
示例#8
0
 public async Task <IEnumerable <IVehicleMake> > GetPageAsync(IPagingFilter filter = null)
 {
     if (filter.SearchString != null)
     {
         var makes = Mapper.Map <IEnumerable <VehicleMakePoco> >(
             await Repository.GetWhere <VehicleMake>()
             .Where(r => r.Name.ToUpper().Contains(filter.SearchString.ToUpper()))
             .OrderBy(k => k.Name)
             .Skip((filter.PageNumber - 1) * filter.PageSize)
             .Take(filter.PageSize)
             .ToListAsync());
         return(makes);
     }
     else
     {
         var makes = Mapper.Map <IEnumerable <VehicleMakePoco> >(
             await Repository.GetWhere <VehicleMake>()
             .OrderBy(k => k.Name)
             .Skip((filter.PageNumber - 1) * filter.PageSize)
             .Take(filter.PageSize)
             .ToListAsync());
         return(makes);
     }
 }
示例#9
0
 public async Task <IEnumerable <IVehicleMake> > GetAsync(IPagingFilter filter = null)
 {
     return(await Repository.GetPageAsync(filter));
 }
示例#10
0
        public virtual async Task <PagedList <TEntity> > FindAll(IPagingFilter filter, bool asNoTracking = true)
        {
            var query = GetFindAllQueryable(asNoTracking);

            return(await query.Paginate(filter));
        }
 public static IQueryable <T> SetOrderingAndPaging <T>(this IQueryable <T> query, IPagingFilter filter)
 {
     return(query.SetOrdering(filter).SetPaging(filter));
 }
        public static async Task <PagedList <T> > Paginate <T>(this IQueryable <T> query, IPagingFilter filter)
        {
            var count = await query.CountAsync();

            if (!string.IsNullOrWhiteSpace(filter.OrderBy))
            {
                var direction = filter.Ascending ? ListSortDirection.Ascending : ListSortDirection.Descending;
                query = query.Order(filter.OrderBy, direction);
            }

            var items = await query
                        .Skip((filter.PageNumber - 1) *filter.PageSize)
                        .Take(filter.PageSize)
                        .ToListAsync();

            return(new PagedList <T>(items, count, filter.PageNumber, filter.PageSize));
        }