问题
I use .net 2.0 (C#)
I have a Person class, and i pupulate List< Person> p from the database.
i know for a fact that my list has duplicates, but when i try to remove the duplicates they don't get removed.
Does my Person class need to implement any interfaces for List< T>.Contains(T) to work properly?
Any other ideas?
Thank you.
回答1:
Your Person class should implement IEquatable
回答2:
You should override Equals and GetHashCode method.
回答3:
The example you reference is not a solution for removing dupes from a list, it is a function that takes a list and yields an iterator that will exclude duplicates. If you need to dedupe the entire list in one go you would need to take the IEnumerable<T>
returned from the function and pass it into a new List<T>
.
回答4:
You need to overload Object.Equals(Object obj) in your class.
回答5:
The docs say "This method determines equality using the default equality comparer EqualityComparer(T).Default
".
来源:https://stackoverflow.com/questions/593171/how-do-i-make-sure-that-listt-containst-works-with-my-custom-class