Как преобразовать List <T> в HashSet <T> в С#?

У меня есть список, который имеет дубликаты объектов. Чтобы решить это, мне нужно преобразовать List в HashSet (в С#). Кто-нибудь знает, как?

Ответы

Ответ 2

Альтернативный способ:

var yourlist = new List<SomeClass>();

// [...]

var uniqueObjs = yourlist.Distinct();  //Gives you a List with unique Objects of the List.

Обратите внимание, что это возможно только в том случае, если SomeClass каким-то образом переопределяет GetHashCode и Equals. Это справедливо и для

var uniqueObjs = new HashSet<SomeType>(yourOriginalList);

В противном случае вы можете реализовать свой собственный IEqualityComnparer -класс и передать его в отдельный.

Обратите внимание, что при подходе Distinct() вы также можете искать различные значения свойств объекта в списке:

var uniqueNames = yourlist.Select(obj => obj.Name).Distinct(); 

и еще...

Ответ 3

Если ваш тип правильно реализует IEquatable<T>, Equals() и GetHashCode(), то вам не нужно самостоятельно выполнять дедупликацию. Вы можете использовать Linq Distinct(), чтобы сделать это следующим образом:

myList = myList.Distinct().ToList();