获得两个列表之间的差异

Meh*_*dad 2 .net c# object

我有一个对象类型的2个列表:

List<MyClass> list1;
List<MyClass> list2;

提取这两个List之间数据差异的最佳方法(性能和清洁代码)是什么?
我的意思是获取添加,删除或更改的对象(以及更改)?

mat*_*mmo 13

尝试ExceptUnion,但是你需要,以便找到两个差异做两个.

var exceptions = list1.Except(list2).Union(list2.Except(list1)).ToList();
Run Code Online (Sandbox Code Playgroud)

或者作为Linq替代方案,可能有一个更快的方法:HashSet.SymmetricExceptWith():

var exceptions = new HashSet(list1);

exceptions.SymmetricExceptWith(list2);
Run Code Online (Sandbox Code Playgroud)