比较2个列表并减少结果列表的数量

时间:2019-06-06 09:49:52

标签: c# list linq

我有2个列表

grpoList

enter image description here

我有第二个命名程序集

enter image description here

我有以下代码

grpoList = grpoList.Where(c => assembly.Exists(cr => cr.ItemCode == c.ItemCode)).ToList();

这将返回

enter image description here

如何修改代码,使结果上的DocEntry 393行的数量为2而不是4?

2 个答案:

答案 0 :(得分:4)

您可能希望在列表之间执行Join并从中选择所需字段

var data = grpoList.Join(assembly,
                                x => x.ItemCode,
                                y => y.ItemNo,
                                (x, y) => new 
                                 { 
                                   DocEntry = x.DocEntry, 
                                   LineNum = x.LineNum,
                                   CarCode = x.CarCode, 
                                   ItemCode = x.ItemCode,
                                   OpenQty = y.OpenQty,
                                   DocDate = x.DocDate
                                  }).ToList();

答案 1 :(得分:0)

我们可以使用linq联接创建自定义输出:

var query = from c in grpoList
            join cr in assembly
                 on c.ItemCode equals cr.ItemCode
            select new
            {
                c.DocEntry,
                c.LineNum,
                c.CarCode, 
                c.ItemCode,
                OpenQty = c.OpenQty - cr.OpenQty,
                c.DocDate
            };

保持名称c和cr与您的问题相同,以便您轻松理解。