Чтобы частично ответить на вопрос, рассмотрите общий метод расширения Linq OrderBy
, который задокументирован здесь . Можно использовать делегат, чтобы обеспечить отображение элементов последовательности на тип, который затем используется для правильного сравнения. Следовательно, фактическая сортировка отделена от порядка, который неявно задается посредством реализации типа результата. Используемый тип delagate позволяет более абстрактно реализовать алгоритм сортировки.