多个对象联合,分组统计

if (planAllotedMaterialList != null && planAllotedMaterialList.Count > 0)
                {
                    var query = (from plan in list
                                 join material in planAllotedMaterialList on new { plan.POID, plan.ProductionEventID, plan.ProductionEventDetailID } equals new { material.POID, ProductionEventID = material.PlanID, ProductionEventDetailID = material.PlanDetailID }
                                 //orderby b.BusinessName
                                 group new { plan, material } by new { plan.FactoryID, plan.WorkshopID, plan.ParentProductTypeID, material.StockLocation, material.MaterialCode, material.MaterialColor, material.MaterialSize } into g
                                 select new
                                 {
                                     PlanMaterialCompleteSetRateInfo = g.First().plan.Clone(),
                                     PlanAllotedMaterial = g.First().material.Clone(),
                                     Amount = g.Sum(m => m.plan.Amount),
                                     PoMatRequestAmount = g.Max(m => m.material.PoMatRequestAmount),
                                     AllotedAmount = g.Sum(m => m.material.AllotedAmount),
                                     MaterialCode = string.Join(",", g.Select(m => m.material.MaterialCode).Distinct().ToArray()),
                                     MaterialName = string.Join(",", g.Select(m => m.material.MaterialName).Distinct().ToArray()),
                                     MaterialColor = string.Join(",", g.Select(m => m.material.MaterialColor).Distinct().ToArray()),
                                     MaterialSize = string.Join(",", g.Select(m => m.material.MaterialSize).Distinct().ToArray()),
                                     Unit = string.Join(",", g.Select(m => m.material.Unit).Distinct().ToArray()),
                                     SeasonCD = string.Join(",", g.Select(m => m.plan.SeasonCD).Distinct().ToArray()),
                                     PlannedDemandDate = g.Min(m => m.plan.PlannedDemandDate),

                                 }).ToList();
                    if (query != null && query.Count > 0)
                    {
                        foreach (var item in query)
                        {
                            PlannedMaterialShortageDetailInfo model = new PlannedMaterialShortageDetailInfo();
                            model.Plan = item.PlanMaterialCompleteSetRateInfo;
                            model.Plan.Amount = item.Amount;
                            model.Plan.SeasonCD = item.SeasonCD;
                            model.Plan.PlannedDemandDate = item.PlannedDemandDate;
                            model.Material = item.PlanAllotedMaterial;
                            model.Material.PoMatRequestAmount = item.PoMatRequestAmount;
                            model.Material.AllotedAmount = item.AllotedAmount;
                            model.Material.MaterialCode = item.MaterialCode;
                            model.Material.MaterialName = item.MaterialName;
                            model.Material.MaterialColor = item.MaterialColor;
                            model.Material.MaterialSize = item.MaterialSize;
                            model.Material.Unit = item.Unit;
                            resultList.Add(model);
                        }
                    }
                }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值