/// <summary> /// 根据条件 连表 分页 排序 /// </summary> /// <typeparam name="TOrderKey">排序字段的类型</typeparam> /// <param name="pagedData">分页相关数据实体</param> /// <param name="whereLambda">查询表达式</param> /// <param name="orderByLambda">排序表达式</param> /// <param name="isAsc">默认排序方式</param> /// <param name="includeEntitysName">要连接的表名</param> public void wherePaged <TOrderKey>(Entitys.FormatModels.PagedData <TEntity> pagedData, System.Linq.Expressions.Expression <Func <TEntity, bool> > whereLambda, System.Linq.Expressions.Expression <Func <TEntity, TOrderKey> > orderByLambda, bool isAsc = true, params string[] includeEntitysName) { //1.0 连表确定原始数据集 DbQuery <TEntity> dbQuery = DbSet as DbQuery <TEntity>; if (includeEntitysName.Any()) { foreach (string item in includeEntitysName) { dbQuery = dbQuery.Include(item); } } //2.0 查询排序确定结果数据集 IQueryable <TEntity> filterQuery; if (isAsc) { filterQuery = dbQuery.Where(whereLambda).OrderBy(orderByLambda); } else { filterQuery = dbQuery.Where(whereLambda).OrderByDescending(orderByLambda); } //3.0 分页 pagedData.rows = filterQuery.Skip((pagedData.PageIndex - 1) * pagedData.PageSize).Take(pagedData.PageSize); pagedData.total = filterQuery.Count(); }
/// <summary> /// 根据条件 连表 分页 排序 /// </summary> /// <typeparam name="TOrderKey">排序字段的类型</typeparam> /// <param name="pagedData">分页相关数据实体</param> /// <param name="whereLambda">查询表达式</param> /// <param name="orderByLambda">排序表达式</param> /// <param name="isAsc">默认排序方式</param> /// <param name="includeEntitysName">要连接的表名</param> public void wherePaged <TOrderKey>(Entitys.FormatModels.PagedData <TEntity> pagedData, System.Linq.Expressions.Expression <Func <TEntity, bool> > whereLambda, System.Linq.Expressions.Expression <Func <TEntity, TOrderKey> > orderByLambda, bool isAsc = true, params string[] includeEntitysName) { dal.wherePaged(pagedData, whereLambda, orderByLambda, isAsc, includeEntitysName); }