linq中的group by 和 left join

Group by实例:

            var lowValidationList = from v in dbS.Calc_Validation
                                    join d in dbS.Calc_Date on v.DateKey equals d.DateKey
                                    where employeeIds.Contains(v.EmployeeId)
                                    && d.Date < date
                                    group v by new { v.EmployeeId, v.CommodityId }
                                        into s
                                        select new Validation_Extend
                                        {
                                            EmployeeId = s.Key.EmployeeId,
                                            CommodityId = s.Key.CommodityId,
                                            ConsumeCash = s.Sum(c => c.ConsumeCash),
                                            ProfitCash = s.Sum(p => p.ProfitCash)
                                        };

Left join实例:

            var realValidation = from v in validationList
                                 join d in drawbackList on new{ id1 = v.EmployeeId, id2 = v.CommodityId }
                                 equals new{ id1 = d.EmployeeId, id2 = d.CommodityId }intos
                                 from a in s.DefaultIfEmpty()
                                 select newValidation_Extend
                                 {
                                     DateKey = date,
                                     EmployeeId = v.EmployeeId,
                                     CommodityId = v.CommodityId,
                                     ConsumeNum = v.ConsumeNum - (a == null ? 0 : a.RefoundNumSum),
                                     ConsumeCash = v.ConsumeCash - (a == null ? 0 : a.RefoundCashSum),
                                     ProfitCash = v.ProfitCash - (a == null ? 0 :a.ProfitCashSum)
                                 };

备注:注意空验证【a == null

 

二者结合使用的实例可参考这个:

http://archive.cnblogs.com/a/1928899/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值