Реализация компаратора недействительна;он нарушает требование:
x.CompareTo(x) == 0
Это сбивает с толку отсортированный список, когда он пытается найти точное совпадение для данного ключа.
Вот простое исправление:
public int Compare(int x, int y)
{
return y.CompareTo(x); // Reverses the in-built comparison.
}
Но если вы хотите решить эту проблему более широко, рассмотрите возможность создания ReverseComparer<T>
, такого как приведенный здесь .