А вы действительно матчасть не знаете. Думал, показалось, но вы действительно не понимаете, что CompareTo к Linq отношения не имеет, ровно как и обобщенные типы. Теперь объясните костыльность, я жду.
Еще более странно, что вы не поняли, то данный метод может сравнить не только число, а всех наследников IComparable. И тут опять - учите матчасть, это знать надо. И конечно, любые типы int и float наследуются от данного интерфейса. Так что проблемы не вижу, вижу только вашу неосознанную агрессию.