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);
        }

 

posted @ 2023-01-29 17:56  屌丝大叔的笔记  阅读(207)  评论(0编辑  收藏  举报