lambda多表左连接

下面是mysql多表左连接,对应的lambda表达式写法,只为快速解决你的问题,详细的就不介绍了,只出结果,相信稍微有点基础的都能看懂。相关知识点,请自行百度

关键字:GroupJoin、SelectMany

sql语句表达方式:

对应的

lambda表达方式

 

sql语句:

SELECT
A.psd_id,A.wo_nbr,A.creation_time,A.wo_customer_part,B.psd_qty_ord,A.net_num,A.report_num,C.user_code,C.user_name,A.machine_code
FROM mes_material_down_rd AS A
LEFT JOIN mes_sync_psd_det AS B ON A.psd_id=B.psd_id AND A.op=B.psd_op AND A.work_id=B.psd_work_id /**/
LEFT JOIN mes_busi_team_user AS C ON A.user_id=C.user_id
WHERE A.is_deleted=0 AND A.creation_time>='2021-11-01 00:00:00' AND A.creation_time<='2021-12-01 00:00:00'
ORDER BY A.creation_time DESC;

lambda语句:

var query = _materialDownRdRepo
                .WhereIf(!string.IsNullOrWhiteSpace(body.MachineName), d => d.MachineCode == body.MachineName)
                .WhereIf(body.BeginTime.HasValue, d => d.CreationTime >= body.BeginTime.Value)
                .WhereIf(body.EndTime.HasValue, d => d.CreationTime <= body.EndTime.Value)
                .WhereIf(!string.IsNullOrWhiteSpace(body.PsdId), d => d.PsdId == body.PsdId)
                .WhereIf(!string.IsNullOrWhiteSpace(body.WoNbr), d => d.WoNbr == body.WoNbr)
                ;
            var queryNew = query.GroupJoin(
                    _psdDetRepo.AsQueryable()
                    , l => new { a = l.PsdId, b = l.Op.ToString(), c = l.WorkId }
                    , r => new { a = r.PsdId, b = r.PsdOp, c = r.PsdWorkId }
                    , (l, r) => new { l, r })
                .SelectMany(lr => lr.r.DefaultIfEmpty(), (lr, r) => new
                {
                    lr.l,
                    r.PsdQtyOrd
                })
                .GroupJoin(_busiTeamUser.AsQueryable(), l => l.l.UserId, r => r.UserId, (l, r) => new { l, r })
                .SelectMany(lr => lr.r.DefaultIfEmpty(), (lr, r) => new
                {
                    lr.l.l,
                    lr.l.PsdQtyOrd,
                    r.UserCode,
                    r.UserName
                });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一个程序员_zhangzhen

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

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

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

打赏作者

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

抵扣说明:

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

余额充值