在有GroupBy的情况下==自动转成 in,联表查询时使用该条件会报错误(非我配置问题)、单表查询无错误 返回
SqlSugar
沟通中
1
428
悬赏:0 飞吻
var query = await poChargeOrderServices.Queryable()
.LeftJoin<PoPayTrade>((chargeOrder, payTrade) => chargeOrder.chargeOrderId == payTrade.orderId && payTrade.orderType == (byte)OrderTypeEnum.ChargingOrder && (payTrade.paymentType == (byte)PaymentTypeEnum.AccountBalance) && payTrade.state == (byte)PoPayTradeEnum.State.Paid)
.Where((chargeOrder, payTrade) =>
chargeOrder.chargeWay == (byte)PoChargeOrderEnum.ChargeWay.Scan &&
(
(chargeOrder.chargeEndTime >= startTime && chargeOrder.chargeEndTime <= endTime) ||
//此方法性能差,慢了不止7秒
//SqlFunc.Subqueryable<PoChargeOrderExt>().Where(ws => ws.chargeOrderId == chargeOrder.chargeOrderId && ws.cancelTime >= startTime && ws.cancelTime <= endTime).Any()
//【联表时,组件有bug】GroupBy(g=> g.chargeOrderId) 必加,不然不会生成 id in(select id)
chargeOrder.chargeOrderId == SqlFunc.Subqueryable<PoChargeOrderExt>().Where(ws => ws.cancelTime >= startTime && ws.cancelTime <= endTime).GroupBy(g => g.chargeOrderId).Select(s => s.chargeOrderId)
) &&
chargeOrder.payStatus == (byte)PoRchOrderEnum.PayStatus.Paid && chargePayState.Contains(chargeOrder.state))
.GroupBy((chargeOrder, payTrade) => new { chargeOrder.merchantId, chargeOrder.pileId, chargeOrder.parkId, payTrade.paymentType })
.Select((chargeOrder, payTrade) => new
{
chargeOrder.merchantId,
chargeOrder.pileId,
chargeOrder.parkId,
payTrade.paymentType,
pileName = SqlFunc.AggregateMax(chargeOrder.pileName),
category = SqlFunc.AggregateMax(chargeOrder.category),
pileNo = SqlFunc.AggregateMax(chargeOrder.pileNo),
pileCode = SqlFunc.AggregateMax(chargeOrder.pileCode),
parkName = SqlFunc.AggregateMax(chargeOrder.parkName),
payAmount = SqlFunc.AggregateSumNoNull<decimal>(SqlFunc.IF(payTrade.paymentType != (byte)PaymentTypeEnum.AccountBalance || payTrade.paymentName != z02Name).Return(payTrade.payAmount).End(0)), //支付金额
giftAmt = SqlFunc.AggregateSumNoNull<decimal>(SqlFunc.IF(payTrade.paymentType == (byte)PaymentTypeEnum.AccountBalance && payTrade.paymentName == z02Name).Return(payTrade.payAmount).End(0)), //赠送金额支付
})
.MergeTable()
.Where(itw => itw.paymentType > 0)
.ToListAsync();
热忱回答(1)
-
fate sta VIP0
2026/2/2这种需要DEMO删 掉OBJ和BIN打包上传。
0 回复