Это ожидаемое поведение. Это не сортировка записей, записи Hashtables повторяются в недетерминированном порядке. Они оптимизированы для произвольного доступа, и, как следствие, порядок вставки не сохраняется в структуре HashTable
, поэтому записи не могут повторяться в порядке вставки.
Согласно странице MSDN сериализация и десериализация хеш-таблицы может привести к изменению порядка итерации.
Возможно, вы сможете использовать NameValueCollection
или SortedDictionary
, как указано в этот вопрос / ответ
Другой вариант (при условии, что ни один из приведенных выше вариантов не выполняет то, что вы хотите) - создать класс, который будет делать именно то, что вы хотите. Вы можете отслеживать записи и сохранять их в списке (а также в хеш-таблице), а затем возвращать итератор для списка, а не хеш-таблицу из вашего класса, чтобы вы могли получить итерацию по порядку и быстрый произвольный доступ.