Я реализовал IEqualityComparer и IEquatable (оба точно), но когда я вызываю метод Distinct() в коллекции, он не вызывает методы, которые приходят с ним. Вот код, который я выполняю при вызове функции Distinct().Distinct() не вызывает методы равных
ObservableCollection<GigViewModel> distinctGigs = new ObservableCollection<GigViewModel>(Gigs.Distinct<GigViewModel>());
return distinctGigs;
Я хочу вернуть ObservableCollection, который не содержит каких-либо двойных объектов, которые находятся в ObservableCollection в «гигов».
Я реализует интерфейсы, как это на классе GigViewModel:
public class GigViewModel : INotifyPropertyChanged, IEqualityComparer<GigViewModel>, IEquatable<GigViewModel>
{
....
}
И переопределить методы, которые приходят с интерфейсами, как так:
public bool Equals(GigViewModel x, GigViewModel y)
{
if (x.Artiest.Naam == y.Artiest.Naam)
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(GigViewModel obj)
{
return obj.Artiest.Naam.GetHashCode();
}
public bool Equals(GigViewModel other)
{
if (other.Artiest.Naam == this.Artiest.Naam)
{
return true;
}
else
{
return false;
}
}
Спасибо за помощь я получаю , Поэтому я создал отдельный класс, который реализует IEqualityComparer и передал его экземпляр в метод disctinct. Но методы все еще не запускаются.
EqualityComparer:
class GigViewModelComparer : IEqualityComparer<GigViewModel>
{
public bool Equals(GigViewModel x, GigViewModel y)
{
if (x.Artiest.Naam == y.Artiest.Naam)
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(GigViewModel obj)
{
return obj.Artiest.Naam.GetHashCode();
}
}
Distinct()
вызов:
GigViewModelComparer comp = new GigViewModelComparer();
ObservableCollection<GigViewModel> distinctGigs = new ObservableCollection<GigViewModel>(Gigs.Distinct(comp));
return distinctGigs;
EDIT2:
Метод GetHashCode()
НЕ дозвонились! После внедрения нового класса. Но коллекция все еще содержит дубликаты. У меня есть список «Gigs», который содержит объект «Artiest» (или Artist). У этого исполнителя есть свойство Naam, которое является строкой (Name).
Он вызывает GetHashCode? – Liath
Нет, нет. –
Вы _certain_ метод не вызывается, или вы просто видите «дубликаты» в своих _results_. Вы уверены, что это не различия в пробельной или символьной оболочке? –