Проблема с Вашим GetHashCode
. Необходимо изменить его для возврата хэш-кода AllianceName
вместо этого.
int IEqualityComparer<Village>.GetHashCode(Village obj)
{
return obj.AllianceName.GetHashCode();
}
вещь, если Equals
возвраты true
, объекты должны иметь тот же хэш-код, который не имеет место для различного Village
объекты с тем же AllianceName
. С тех пор Distinct
работы путем создания хеш-таблицы внутренне, Вы закончите с равными объектами, которые не будут подобраны вообще из-за различных хэш-кодов.
Точно так же для сравнения двух файлов, если хеш двух файлов не является тем же, Вы не должны проверять сами файлы вообще. Они будут отличаться. Иначе Вы продолжите проверять, чтобы видеть, являются ли они действительно тем же или нет. Это точно, что хеш-таблица, которая Distinct
использование ведет себя.
Или измените строку
return alliances.Distinct(new AllianceComparer());
на
return alliances.Select(v => v.AllianceName).Distinct();
return alliances.Select (v => v.AllianceName) .Distinct ();
Это вернет IEnumerable
вместо IEnumerable
.