public async Task <ServicePageResult <T> > Select <S>(int pageSize, int pageIndex, Expression <Func <T, bool> > whereLambda, Expression <Func <T, S> > orderByLambda, bool isAsc) { ServicePageResult <T> res = new ServicePageResult <T> { PageIndex = pageIndex, PageSize = pageSize }; res.TotalSize = await myDbContextRead.Set <T>().Where(whereLambda).CountAsync(); if (isAsc) { var entities = await myDbContextRead.Set <T>().Where(whereLambda) .OrderBy <T, S>(orderByLambda) .Skip(pageSize * (pageIndex - 1)) .Take(pageSize).ToListAsync(); res.List = entities; return(res); } else { var entities = await myDbContextRead.Set <T>().Where(whereLambda) .OrderByDescending <T, S>(orderByLambda) .Skip(pageSize * (pageIndex - 1)) .Take(pageSize).ToListAsync(); res.List = entities; return(res); } }
/// <summary> /// 查询分页 /// </summary> /// <param name="pageSize">条数</param> /// <param name="pageIndex">页码</param> /// <param name="whereLambda">条件表达式</param> /// <param name="orderByLambda">orderby表达式</param> /// <param name="isAsc">true 正序 false 倒叙</param> /// <returns></returns> public async Task <ServicePageResult <T> > SelectPage(int pageSize, int pageIndex, Expression <Func <T, bool> > whereLambda, Expression <Func <T, object> > orderByLambda, bool isAsc = true) { ServicePageResult <T> res = new ServicePageResult <T> { PageIndex = pageIndex, PageSize = pageSize }; RefAsync <int> total = 0; if (isAsc) { res.List = await db.Queryable <T>().OrderBy(orderByLambda, OrderByType.Asc) .ToPageListAsync(pageIndex, pageSize, total); } else { res.List = await db.Queryable <T>().OrderBy(orderByLambda, OrderByType.Desc) .ToPageListAsync(pageIndex, pageSize, total); } res.TotalSize = total.Value; return(res); }