如何在 C# 中比较两个列表并减去单列值
本文关键字:列表 两个 单列值 比较 | 更新日期: 2023-09-27 18:35:06
我正在尝试比较两个列表并更新第一个列表中的值。
我的代码是
我有一个这样的列表
ChitNo Company LoadingType BrandCode PackingCode GradeCode Quantity
1 A L B1 P1 G1 100
2 B U B1 P1 G1 90
3 C L B2 P1 G2 200
4 D L B1 P1 G1 80
我想按品牌代码、包装、大代码和此组合的装载类型"L"数量总和以及此组合的装载类型"U"数量(品牌代码、包装代码、等级代码)的分钟数进行分组。
I 例外输出为
Brand Packing Grade Quantity
B1 P1 G1 90
B2 P1 G2 200
为此,我返回了代码
var Loaded = (from d in LoadedList.Where(s => s.LoadingType == "L") group d by new { Brand = d.BrandCode, Packing = d.PackingCode, Grade = d.GradeCode } into g select new { Brand = g.Key.Brand, Packing = g.Key.Packing, Grade = g.Key.Grade, Quantity = g.Sum(e => e.LoadingQty) }).ToList();
var UnLoaded = (from d in LoadedList.Where(s => s.LoadingType == "U") group d by new { Brand = d.BrandCode, Packing = d.PackingCode, Grade = d.GradeCode } into g select new { Brand = g.Key.Brand, Packing = g.Key.Packing, Grade = g.Key.Grade, Quantity = g.Sum(e => e.LoadingQty) }).ToList();
但我不知道比较它并减去数量请帮助我。 提前谢谢。
foreach(var item in LoadedList.Where(r=>r.LoadingType == "U"))
{
item.Quantity *= -1;
}
var summary = from d in LoadedList
group d by new { Brand = d.BrandCode, Packing = d.PackingCode, Grade = d.GradeCode } into g
select new { Brand = g.Key.Brand, Packing = g.Key.Packing, Grade = g.Key.Grade, Quantity = g.Sum(e => e.LoadingQty) }
var difference = (from l in Loaded
join u in UnLoaded on new { l.Brand, l.Packing, l.Grade }
equals new { u.Brand, u.Packing, u.Grade } into lu
from u in lu.DefaultIfEmpty()
select new { Brand = l.Brand, Packing = l.Packing,
Grade = l.Grade, Sum = (l.Sum - u != null ? u.Sum : 0)).ToList();