将 2 个列表与 Except() 方法进行比较,但它没有用

Compare 2 Lists with Except() Method but it didnt work

我想与 Except Method 2 列表进行比较。对象存储在这些列表中。

如果我使用 Except 方法,则不会过滤任何内容,尽管存在相同的对象。

我的目标:

我想要列表 "chkpoints" 中不在列表 "chkpointslist" 中的所有对象。

执行此操作的最佳方法是什么或者我做错了什么?

List<checkpoint> chkpoints = new List<checkpoint>();
List<checkpoint> chkpointslist = new List<checkpoint>();
chkpointslist = database.loadChecklistpoints(checklistid);
chkpoints = database.loadCheckpoint(type);
chkpoints = chkpoints.Except(chkpointslist).ToList();

Enumerable.Except uses the default equality comparer to compare values. So, if your checkpoint class doesn't have an IEquatable,您所有的 checkpoint 实例都将被读取为唯一的。

来自 .NET 文档:

If you want to compare sequences of objects of some custom data type, you have to implement the IEquatable<T> generic interface in a helper class.

Enumerable.Except 文档(上面链接)中有关于如何创建 IEquatable 助手 class 的示例。