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);
}
}
}
多个对象联合,分组统计
最新推荐文章于 2023-07-20 15:09:00 发布