如何确保List .Contains(T)与我的自定义类一起使用?
我使用.net 2.0(C#)
我有一个Person类,我从数据库中傀儡List p。
我知道我的列表有重复的事实,但当我尝试删除重复项时,它们不会被删除。
我的Person类是否需要实现List .Contains(T)的任何接口才能正常工作?
还有其他想法吗?
谢谢。
您的Person类应该实现IEquatable
您应该重写Equals和GetHashCode方法。
您引用的示例不是从列表中删除dupes的解决方案,它是一个获取列表并生成将排除重复项的迭代器的函数。 如果您需要一次性重复删除整个列表,则需要从函数返回的IEnumerable
并将其传递给新的List
。
您需要在类中重载Object.Equals(Object obj)。
文档说“此方法使用默认的相等比较器EqualityComparer(T).Default
”确定相等性。