abp分页查询时,如果IQueryable返回的是IQueryable<DTO>,不能使用.OrderBy().PageBy()
今天在做分页查询时,需要联表查询,然后将 this.GetQueryableForMobile(input) 方法的返回结果改成了IQueryable<ExternalAssignmentWorkOrderDetailListDto>,而不是具体的某个领域模型。导致代码执行到 ToListAsync() 时报错。错误信息就不贴了。
解决方法是不要用Abp的分页了,用普通的linq分页就行了。
/// <summary> /// 分页 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<PagedResultDto<ExternalAssignmentWorkOrderDetailListDto>> GetPagedForMobile(GetExternalAssignmentWorkOrderDetailsInput input) { var query = this.GetQueryableForMobile(input); var count = await query.CountAsync(); // query返回的不是领域模型,而是dto,如果还这么写会报错。 //var dtos = await query // .OrderBy(input.Sorting).AsNoTracking() // .PageBy(input) // .ToListAsync(); var dtos = query.Skip(input.SkipCount).Take(input.MaxResultCount).ToList(); await this.HandleResultForMobile(dtos); return new PagedResultDto<ExternalAssignmentWorkOrderDetailListDto>(count, dtos); }