8,492
社区成员
发帖
与我相关
我的任务
分享public IPage<TEntity> Page<TKey, TEntity>(int pageIndex, int pageSize, Expression<Func<TEntity, bool>> predicate, bool isAsc,
Expression<Func<TEntity, TKey>> keySelector) where TEntity : class
{
using (BaseEntitiesContext context = new BaseEntitiesContext())
{
if (pageIndex <= 0 && pageSize <= 0)
{
throw new Exception("pageIndex或pageSize不能小于等于0!");
}
IPage<TEntity> page = new Page<TEntity>()
{
PageIndex = pageIndex,
PageSize = pageSize
};
int skip = (pageIndex - 1) * pageSize;
if (predicate == null)
{
FutureCount fcount = context.Set<TEntity>().FutureCount();
FutureQuery<TEntity> futureQuery = isAsc
? context.Set<TEntity>().OrderBy(keySelector).Skip(skip).Take(pageSize).Future()
: context.Set<TEntity>().OrderByDescending(keySelector).Skip(skip).Take(pageSize).Future();
page.TotalItems = fcount.Value;
page.Items = futureQuery.ToList();
page.TotalPages = page.TotalItems / pageSize;
if ((page.TotalItems % pageSize) != 0) page.TotalPages++;
}
else
{
var queryable = context.Set<TEntity>().Where(predicate);
FutureCount fcount = queryable.FutureCount();
FutureQuery<TEntity> futureQuery = isAsc
? queryable.OrderBy(keySelector).Skip(skip).Take(pageSize).Future()
: queryable.OrderByDescending(keySelector).Skip(skip).Take(pageSize).Future();
page.TotalItems = fcount.Value;
page.Items = futureQuery.ToList();
page.TotalPages = page.TotalItems / pageSize;
if ((page.TotalItems % pageSize) != 0) page.TotalPages++;
}
return page;
}
} using (BaseEntitiesContext context = new BaseEntitiesContext())
{
var result = context.Page<int?, TBR_Dictionaries>(1, 50, w => w.UPDATER == "00000000-0000-0000-0000-000000000000" , true, w => w.DIC_SORT);
}public virtual IQueryable<T> FindPageList<S>(int pageIndex, int pageSize, out int totalRecord, Expression<Func<T, bool>> whereLamdba, bool isAsc, Expression<Func<T, S>> orderLamdba)
{
var _list = dbEF.Set<T>().AsNoTracking().Where<T>(whereLamdba);
totalRecord = _list.Count();
if (isAsc) _list = _list.OrderBy<T, S>(orderLamdba).Skip<T>((pageIndex - 1) * pageSize).Take<T>(pageSize);
else _list = _list.OrderByDescending<T, S>(orderLamdba).Skip<T>((pageIndex - 1) * pageSize).Take<T>(pageSize);
return _list;
}