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

时间:2019-01-23 04:36:26

标签: c# asp.net-mvc algorithm

我有两个带有不同字段的类似对象的列表。

    l = QGridLayout()
    l.addWidget(QLabel("child1"), 0, 0)
    l.addWidget(QLabel("child2"), 0, 1)
    ...
    parentLayout.addLayout(l)

我必须检查List1中的相似字段是否与List2中的相似字段匹配。如果有任何不同之处,我想更新List1中的该字段。最有效的方法是什么?

2 个答案:

答案 0 :(得分:0)

您可以这样做

QMainWindow::addToolBar(QToolBar *toolbar)

这将从List2中添加List1中不存在的对象,并将其存储在变量list3中。

然后您可以使用来更新List1,

var list3 = List2.Except(List1);

答案 1 :(得分:0)

如果需要匹配相似的字段,则可以像下面这样使用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();