На этот вопрос уже есть ответ здесь:
В чем разница между интерфейсами IComparable и IComparer ? Нужно ли всегда использовать этот интерфейс с методом Array.Sort () методом
IComparable
IComparer
Array.Sort ()