我有两个可枚举的列表。
List<List_Data> List1 = new List<List_Data>();
List1.Add(new List_Data { Material = "1", Batch = "B1", QTY = 5 });
List1.Add(new List_Data { Material = "1", Batch = "B2", QTY = 5 });
List1.Add(new List_Data { Material = "2", Batch = "B1", QTY = 15 });
List<List_Data> List2 = new List<List_Data>();
List2.Add(new List_Data { Material = "1", Batch = "B1", QTY = 2 });
List2.Add(new List_Data { Material = "3", Batch = "B1", QTY = 5 });
List2.Add(new List_Data { Material = "3", Batch = "B2", QTY = 15 });
我想要的是比较两个列表并根据材料和批次获得差异数量(list1.QTY - list2.QTY)。即使另一个列表中不存在某个项目,我也需要根据该材料和批次获得减号或加号。
这是我期待的输出。
Material = "1", Batch = "B1", QTY = 3
Material = "1", Batch = "B2", QTY = 5
Material = "2", Batch = "B1", QTY = 15
Material = "3", Batch = "B1", QTY = -5
Material = "3", Batch = "B2", QTY = -15
这是我到目前为止所做的,
SendList = (from l1 in List1
join l2 in List2 on new { l1.Material, l1.Batch } equals new { l2.Material, l2.Batch } into temp
from l2 in temp.DefaultIfEmpty()
select new Report_Class
{
Material = l1.Material != null ? l1.Material : l2.Material,
Batch = l1.Batch != null ? l1.Batch : l2.Batch,
Difference = l1 != null && l2 != null ? (l1.QTY - l2.QTY).ToString() : l1 != null ? l1.QTY.ToString() : l2.QTY.ToString(),
}).ToList();
问题是它返回 list1 所有存在的项目,但不返回仅存在于列表 2 中的项目。任何帮助将不胜感激。
谢谢。
芜湖不芜
潇湘沐
至尊宝的传说
相关分类