Лучшей практикой является выбор правильной структуры для правильной задачи.Список очень распространенная структура и не имеет каких-либо специальных функций.
Так что для этого случая у вас должна быть какая-то структура, где, когда вы добавляете элемент, он должен решить, куда его поместить.Вся теория графов будет очень полезна для вас, чтобы выбрать правильное решение.Если вы найдете такую структуру, то вам нужно проверить, что уже реализовано..NET Framework содержит много общей структуры, которая может быть полезна.
Таким образом, вместо List вы можете использовать SortedList , и ваш класс Level должен реализовывать интерфейс IDictionary .
Каждый раз, когда вы добавляете экземпляр уровня в такой список, самый низкий уровень будет находиться под индексом 0 таблицы (или размером -1, это зависит от IComparable , который вы будете использовать)
Хорошая статья о Структура данных в C # 2.0