Перенаправления всегда выполняются методом GET
. Я предполагаю, что в web.php
этот маршрут определен с использованием другого метода HTTP (например, PUT
или POST
) - вот почему вы получаете эту ошибку. Взгляните на файл web.php
и убедитесь, что вы используете метод GET
или выполните перенаправление на другой URL.
Во-первых, на Вашем основном предположении, Вы корректны. Нормальный словарь не делает гарантий о порядке перечисления.
Во-вторых, необходимо будет быть осторожны относительно движения SortedDictionary
с пользовательским IComparer
маршрут. Компаратор используется для ключевого равенства, а также сортировки набора. Таким образом, использование IComparer
на основе дополнительного порядка Вы можете испытать затруднения при получении элемента от a SortedDictionary
значением ключа это могло бы закончиться потерянное в дереве (который является поддержкой отсортированного словаря).
Если Вы готовы пойти Универсальным путем Библиотеки классов C5, можно экономично расходовать некоторое горючее из a HashedLinkedList<KeyValuePair<T>>
или HashedLinkedList<T>
если T самовключается. Можно создать IEqualityComparer
это будет воздействовать на ключ для генерации хэш-кода. Затем получая фактическое значение, можно использовать Find(ref T x)
с прототипом x (возможно, где только ключ устанавливается), который найдет сохраненный T
и возвратитесь, это ссылкой в O (1) время по сравнению с O (зарегистрируйте n) с a SortedDictionary
. Также, быть поддержанным a LinkedList
, это, как гарантируют, перечислит, кроме того, порядок (и можно указать, какое направление Вы предпочли бы через C5 IDirectedEnumerable
).
Надежда, которая помогает.
Вы могли создать свой собственный универсальный класс (и иметь его, происходят из Словаря или SortedDictionary <>), и реализуйте свою собственную версию GetEnumerator (), в котором можно отсортировать словарь по ключу и возвратить отсортированные значения (или если Вы используете SortedDictionary затем, он уже отсортирован).
Вы могли также использовать SortedList <>, который лучше и легче в некоторых случаях, проверьте MSDN для наблюдения который лучшие соответствия потребности.
Можно достигнуть эффекта, который Вы хотите только при помощи a List
это хранит ключи в порядке дополнения. Затем можно перечислить тот список в порядке и получить значения от Dictionary
.
Однако, если Вы хотите сделать все это с единственным существующим типом набора, я не знаю о типе, который делает это без Вас бывший должный обеспечить компаратор или без ключа, являющегося частью объекта. Для первого Вы могли попробовать SortedDictionary
и для последнего, Вы могли получить новый набор из KeyedCollection
(не совсем уверенный, что это поддержало бы порядок без компаратора, таким образом, необходимо будет экспериментировать для подтверждения этого).
Тема немного устарела, но я искал коллекцию с таким же поведением (сохраните порядок, в котором элементы были добавлены) И иметь возможность индексировать коллекцию по ключу. Ответ - абстрактный класс KeyedCollection <>! (в пространстве имен System.Collections.ObjectModel) Я провел простой тест со словарем и этим набором ключей, добавив несколько раз, убрав один из середины и снова добавив элемент. KeyedCollection добавляет новый элемент в конец, Словарь поместил его в исходное положение (я предполагаю, что там происходит какое-то хеширование)