如何在 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();

但我不知道比较它并减去数量请帮助我。 提前谢谢。

如何在 C# 中比较两个列表并减去单列值

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();