检查两个类列表之间的差异

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

以上是关于检查两个类列表之间的差异的主要内容,如果未能解决你的问题,请参考以下文章

比较两个迭代器并检查哪些元素被添加,删除或两者之间相同

两个片段之间的 onItemClickListener

两个列表之间的差异

如何检查两个日期之间的差异(以秒为单位)?

是否可以使用 VImage 检查两个捕获的帧之间的差异?

python二级练习和考试复习(寻找差异&&链式函数调用&&检查重复值)