检查两个类列表之间的差异
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查两个类列表之间的差异相关的知识,希望对你有一定的参考价值。
我有两个具有相似字段的不同类型对象的列表。
List<BMS_ROAD_INV> List1 = bmsContext.BMS_ROAD_INV.ToList();
List<RoadInventory> List2 = context.RoadInventories.ToList();
我必须检查List1中的类似字段是否与List2中的类似字段匹配。如果有任何不同,我想更新List1中的该字段。最有效的方法是什么?
答案
你可以这样做
var list3 = List2.Except(List1);
这将从List2添加List1中不存在的对象,并将其存储在变量list3中。
然后你可以使用,更新List1,
List1.Add(list3);
另一答案
如果需要匹配类似字段,那么您可以使用如下所示的Intersect:
List<BMS_ROAD_INV> list1 = bmsContext.BMS_ROAD_INV.ToList();
List<RoadInventory> List2 = context.RoadInventories.ToList();
var commonUsers = list1.Select(a => a.Field1).Intersect(list2.Select(b => b.Field1));
如果Field1是一个类,那么需要实现IEquatable接口。或者您可以使用接受自定义IEqualityComparer的Intersect重载
查找常见数据的另一种方法:
var commonData = (from objA in list1
join objB in list2 on objA.Field1 equals objB.Field2
select objA/*or objB*/).ToList();
以上是关于检查两个类列表之间的差异的主要内容,如果未能解决你的问题,请参考以下文章