SqlSugar 查询列表去重

Take(1).PartitionBy(d=>d.Id)

//完整查询demo如下:
result = await _repDrives.AsQueryable()
    .LeftJoin<ClientUser>((d, u) => d.UserId == u.Id)
    .LeftJoin<Car>((d, u, c) => c.UserId == d.UserId)
    .LeftJoin<UserExtension>((d, u, c, uc) => u.Id == uc.UserId)
    .WhereIF(!string.IsNullOrEmpty(input.FullName), ((d, u, c, uc) => u.FullName.Contains(input.FullName)))
    .WhereIF(input.Id > 0, ((d, u, c, uc) => d.Id == input.Id))
    .WhereIF(!string.IsNullOrEmpty(input.Account), ((d, u, c, uc) => u.Account == input.Account))
    .WhereIF(input.IsOnline >= 0, ((d, u, c, uc) => uc.IsOnLine == Convert.ToBoolean(input.IsOnline)))
    .WhereIF(!string.IsNullOrEmpty(input.PhoneNo), ((d, u, c, uc) => u.PhoneNo == input.PhoneNo))
    .WhereIF(input.CarStatus > 0, ((d, u, c, uc) => c.Status == input.CarStatus))
    .WhereIF(!string.IsNullOrEmpty(input.MerchantId), ((d, u, c, uc) => (d.MerchantId == Convert.ToInt64(input.MerchantId)) && (input.MerchantId != "0")))
    .WhereIF(input.AuditResults > 0, ((d, u, c, uc) => d.AuditResults == input.AuditResults))
    .Where((d, u, c, uc) => d.CreateTime >= input.BeginDt && d.CreateTime <= input.EndDt)
    .Where((d, u, c, uc) => d.IsDelete == false)
    .OrderByDescending((d, u, c) => d.CreateTime)
    .Select((d, u, c, uc) => new DriveListOutputDto
    {
        Id = d.Id,
        //用户ID
        UserId = u.Id,
        //司机ID
        DriverId = d.Id,
        //帐号ID
        Account = u.Account,
        //头像
        Avatar = u.Avatar,
        //名字
        FullName = string.IsNullOrEmpty(u.FirstName + u.LastName) == true ? "暂无数据" : u.FirstName + u.LastName,
        //电话号码
        PhoneNo = u.PhoneNo,
        //司机评分
        DriverScore = uc.DriverScore,
        //注册时间
        RegistTime = d.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
        //上线状态
        IsOnline = uc.IsOnLine,
        //账户状态
        IsEnabled = uc.IsEnabled,
        //车辆状态
        CarStatus = c.Status,
        //司机所属商户Id
        MerchantId = d.MerchantId,
    }).Take(1).PartitionBy(d => d.Id)
    .ToPagedListAsync(input.Index, input.Limit);



//生成mysql查询脚本如下:
     SELECT  `d`.`id` AS `Id` , `u`.`id` AS `UserId` , `d`.`id` AS `DriverId` , `u`.`account` AS `Account` , `u`.`avatar` AS `Avatar` , 
( CASE  WHEN (( CASE  WHEN (   concat(`u`.`first_name`,`u`.`last_name`)   IS NULL   OR   concat(`u`.`first_name`,`u`.`last_name`)  ='')  THEN 1 ELSE 0 END ) = 1 ) THEN N'暂无数据'  ELSE   concat(`u`.`first_name`,`u`.`last_name`)   END ) AS `FullName` , 
`u`.`phone_no` AS `PhoneNo` , `uc`.`driver_score` AS `DriverScore` , DATE_FORMAT(`d`.`create_time`, '%Y-%m-%d %H:%i:%S') AS `RegistTime` , `uc`.`is_online` AS `IsOnline` , `uc`.`is_enabled` AS `IsEnabled` , `c`.`status` AS `CarStatus` , 
`d`.`merchant_id` AS `MerchantId`  
FROM `driver_info` `d` 
Left JOIN `client_user` `u` ON ( `d`.`user_id` = `u`.`id` )  
Left JOIN `car_info` `c` ON ( `c`.`user_id` = `d`.`user_id` )  
Left JOIN `client_user_extension` `uc` ON ( `u`.`id` = `uc`.`user_id` )    
WHERE ( `uc`.`is_online` = CAST(0 AS SIGNED))  AND (( `d`.`create_time` >= '1970-01-01 00:00:00.000' ) AND ( `d`.`create_time` <= '2100-01-01 00:00:00.000' ))  AND ( `d`.`is_delete` = 0 )
 GROUP BY `d`.`Id`  ORDER BY `d`.`create_time` DESC LIMIT 0,10


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纪寻川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值