Если вы хотите вставить в «середину» очереди, возможно, вы ищете «очередь с приоритетами».
К сожалению, это не встроенный класс .Net, AFAIK. Но, по крайней мере, теперь у вас есть имя концепции для поиска.
См. Этот (закрытый) раздел вопросов и ответов для некоторых, возможно, полезных ссылок:
Приоритетная очередь в .Net
Цитата из вопроса есть:
Приоритетные очереди - это структуры данных, которые обеспечивают большую гибкость, чем простая сортировка, поскольку они позволяют новым элементам входить в систему через произвольные интервалы. Гораздо эффективнее вставлять новое задание в очередь с приоритетами, чем пересортировать все при каждом поступлении.
Базовая очередь приоритетов поддерживает три основных операции:
- Вставка (Q, X). Получив элемент x с ключом k, вставьте его в очередь с приоритетами Q.
- Найти-Minimum (Q). Вернуть указатель на элемент
значение ключа которого меньше, чем у любого другого ключа в очереди с приоритетами
Q.
- Удалить-минимум (Q). Удалить элемент из очереди приоритетов Q, ключ которого минимум