public virtual IEnumerable <T> GetPaged(Expression <Func <T, bool> > predicate, Action <IOrderable <T> > order, int pageIndex, int pageSize) { int skip = pageIndex * pageSize; Orderable <T> orderable = new Orderable <T>(Set <T>().Where(predicate)); order(orderable); return(orderable.AsQueryable() .Skip(skip) .Take(pageSize)); }
private IEnumerable <T> GetPagedActiveOrDeleted(Expression <Func <T, bool> > predicate, Action <IOrderable <T> > orderAction, int pageIndex, int pageSize, bool isActiveOrDeleted) { int skip = pageIndex * pageSize; ParameterExpression itemParameter = Expression.Parameter(typeof(T), "item"); Expression <Func <T, bool> > whereExpression = Expression.Lambda <Func <T, bool> > ( Expression.And( predicate, Expression.Equal(Expression.Property(itemParameter, "IsDeleted"), Expression.Constant(isActiveOrDeleted)) ), itemParameter); Orderable <T> orderable = new Orderable <T>(Set <T>().Where(whereExpression)); orderAction(orderable); return(orderable.AsQueryable() .Skip(skip) .Take(pageSize)); }