Сортировка списка при каждом доступе - плохая идея. У вас должен быть флаг, который вы устанавливаете при изменении коллекции. Только если этот флаг установлен, вам нужно отсортировать, а затем сбросить флаг.
Но лучше всего, если у вас есть структура данных, которая по определению всегда сортируется. Это означает, что если вы вставляете новый элемент, элемент автоматически вставляется по правильному индексу, таким образом сохраняя коллекцию отсортированной.
Я не знаю, какую платформу / фреймворк вы используете. Я знаю, что .NET предоставляет класс SortedList, который управляет таким алгоритмом сортировки вставок.