Iworb
@Iworb
WEB-разработчик

Как в списке объектов в C# удалить повторяющиеся значения?

Есть класс Variables (далее V) с полями ID и Name. Также есть Класс Combination (далее C) с SortedSet'ом из объектов класса V и некоторыми другими полями. И, собственно есть List Model
К концу алгоритма у меня в этом списке остаются одинаковые значения класса C. Distinct не помогает, для классов V и C реализованы наследования интерфейсов IEquatable и IComparable.
Проверил их вручную - работают как надо.
Подскажите, как в списке удалить повторы?
  • Вопрос задан
  • 10754 просмотра
Решения вопроса 2
Вообще дело возможно в том, что Returns distinct elements from a sequence by using the default equality comparer to compare values. А для reference type, default будет сравнение ссылок.

Есть перегрузка, принимающая IEqualityComparer http://msdn.microsoft.com/en-us/library/vstudio/bb338049(v=vs.100).aspx
Ответ написан
Illivion
@Illivion
У вас методы Equals(...) сравнивают только ID, а метод GetHashCode() возвращает хеш от ID и Name. Решите точно, когда вы считаете, что объекты равны: когда оба параметра равны или когда только ID равны, и укажите их в Equals(...) и GetHashCode(). И вот эту статью тоже полезно прочитать.

Update:
Пока ковырялся в декомпиленных дебрях .NET, вы тут уже разобрались - я несколько опоздал :)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы