查询问题 根据页面传参数查询系统异常:中文提示 : 多表查询存在别名不一致,请把Where中的f改成p就可以了,特殊需求 返回

SqlSugar 沟通中
5 387
该叫什么 niu 发布于2025/8/23
悬赏:0 飞吻

        public async Task<IPageList<CoreCmsDepositWater>> QueryPageAsync(

            Expression<Func<CoreCmsDepositWater, bool>> predicate,

            Expression<Func<CoreCmsDepositWater, object>> orderByExpression,

            OrderByType orderByType,

            int pageIndex = 1,

            int pageSize = 20,

            bool blUseNoLock = false)

        {

            RefAsync<int> totalCount = 0;


            // 构建基础查询

            var query = DbClient.Queryable<CoreCmsDepositWater, CoreCmsOrder>(

                    (p, b) => new JoinQueryInfos(JoinType.Inner, p.orderId == b.orderId))

                .Select((p, b) => new CoreCmsDepositWater

                {

                    id = p.id,

                    orderId = p.orderId,

                    beforeAmount = p.beforeAmount,

                    afterAmount = p.afterAmount,

                    collectionBeforeAmount = p.collectionBeforeAmount,

                    collectionAfterAmount = p.collectionAfterAmount,

                    createTime = p.createTime,

                    collectionType = p.collectionType,

                    userName = p.userName,

                    remarks = p.remarks,

                    customerName = p.customerName,

                    beforePlatformAmount = p.beforePlatformAmount,

                    afterPlatformAmount = p.afterPlatformAmount,

                    beforeAmountReceived = p.beforeAmountReceived,

                    afterAmountReceived = p.afterAmountReceived,

                    status = b.status, // 来自关联表的字段

                                       // 这里应该添加所有需要的字段...

                });


            // 根据参数决定是否使用NOLOCK

            if (blUseNoLock)

            {

                query = query.With(SqlWith.NoLock);

            }


            // 添加条件筛选

            if (predicate != null)

            {

                query = query.Where(predicate);

            }


            // 添加排序

            if (orderByExpression != null)

            {

                query = orderByType == OrderByType.Asc

                    ? query.OrderBy(orderByExpression)

                    : query.OrderByDescending(orderByExpression);

            }


            // 执行分页查询

            var page = await query.ToPageListAsync(pageIndex, pageSize, totalCount);


            return new PageList<CoreCmsDepositWater>(page, pageIndex, pageSize, totalCount);

        }


热忱回答5

  • fate sta fate sta VIP0
    2025/8/24

           Expression<Func<CoreCmsDepositWater, bool>> predicate


         这个参数别名要改成一样。不要用f=>改成p=>

    0 回复
  • niu niu VIP0
    2025/8/24

    @fate sta:  where = where.And(p => orderTypes.Contains(p.collectionType)); 我这里就是P

    0 回复
  • fate sta fate sta VIP0
    2025/8/25

    那就看Orderby 你自个排查一下。注释排查法具体是哪行代码的参数问题

    0 回复
  • query.MergeTable() 后再执行orderby

    0 回复
  • cejpo cejpo VIP0
    2周前

    我也是遇到这样的问题,请问你解决了吗?


    0 回复