Сравнение и равенство в C#
Сортировка спрашивает, какой из двух объектов раньше. Словарь и множество спрашивают, тот ли это уже известный объект. Это разные вопросы. Порядок может сказать, что один меньше другого, а равенство - что для коллекции они всё же один и тот же ключ.
Правила нельзя задавать вразнобой. Если два объекта равны, их хеш-коды тоже должны совпадать. Хеш-код - это число, по которому словарь выбирает ячейку. Если коды разные, равные объекты попадут в разные ячейки и пара не найдётся. Если сравнение считает объекты равными по порядку, равенство не должно считать их разными.
Для чисел и строк правила уже есть. Для своего класса их задают в самом типе: что считать одинаковым, что считать большим и какой хеш-код из этого следует. Раздел про то, как эти ответы согласовать.