如何确保List <t> .Contains(T)与我的自定义类一起使用?</t>

时间:2009-02-27 01:05:00

标签: c# .net-2.0

我使用.net 2.0(C#)

我有一个Person类,我傀儡List&lt;人&GT; p来自数据库。

我知道我的列表有重复的事实,但当我尝试remove the duplicates时,它们不会被删除。

我的Person类是否需要为List&lt;实现任何接口? T&gt;。包含(T)正常工作?

还有其他想法吗?

谢谢。

5 个答案:

答案 0 :(得分:8)

您的Person类应该实现IEquatable

答案 1 :(得分:4)

您应该覆盖等于 GetHashCode 方法。

答案 2 :(得分:1)

您引用的示例不是从列表中删除dupes的解决方案,它是一个获取列表并生成将排除重复项的迭代器的函数。如果您需要一次性重复删除整个列表,则需要从函数返回IEnumerable<T>并将其传递给新的List<T>

答案 3 :(得分:1)

您需要在类中重载Object.Equals(Object obj)。

答案 4 :(得分:0)

docs说“此方法使用默认的相等比较器EqualityComparer(T).Default确定相等性。”