Какие dotnet объекты класса набора могут быть перечислены в “дополнительном порядке” и получены через ключ?

Перенаправления всегда выполняются методом GET. Я предполагаю, что в web.php этот маршрут определен с использованием другого метода HTTP (например, PUT или POST) - вот почему вы получаете эту ошибку. Взгляните на файл web.php и убедитесь, что вы используете метод GET или выполните перенаправление на другой URL.

5
задан Rory Becker 21 October 2008 в 17:49
поделиться

4 ответа

Во-первых, на Вашем основном предположении, Вы корректны. Нормальный словарь не делает гарантий о порядке перечисления.

Во-вторых, необходимо будет быть осторожны относительно движения 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).

Надежда, которая помогает.

3
ответ дан 14 December 2019 в 09:04
поделиться

Вы могли создать свой собственный универсальный класс (и иметь его, происходят из Словаря или SortedDictionary <>), и реализуйте свою собственную версию GetEnumerator (), в котором можно отсортировать словарь по ключу и возвратить отсортированные значения (или если Вы используете SortedDictionary затем, он уже отсортирован).

Вы могли также использовать SortedList <>, который лучше и легче в некоторых случаях, проверьте MSDN для наблюдения который лучшие соответствия потребности.

0
ответ дан 14 December 2019 в 09:04
поделиться

Можно достигнуть эффекта, который Вы хотите только при помощи a List это хранит ключи в порядке дополнения. Затем можно перечислить тот список в порядке и получить значения от Dictionary.

Однако, если Вы хотите сделать все это с единственным существующим типом набора, я не знаю о типе, который делает это без Вас бывший должный обеспечить компаратор или без ключа, являющегося частью объекта. Для первого Вы могли попробовать SortedDictionary и для последнего, Вы могли получить новый набор из KeyedCollection (не совсем уверенный, что это поддержало бы порядок без компаратора, таким образом, необходимо будет экспериментировать для подтверждения этого).

4
ответ дан 14 December 2019 в 09:04
поделиться

Тема немного устарела, но я искал коллекцию с таким же поведением (сохраните порядок, в котором элементы были добавлены) И иметь возможность индексировать коллекцию по ключу. Ответ - абстрактный класс KeyedCollection <>! (в пространстве имен System.Collections.ObjectModel) Я провел простой тест со словарем и этим набором ключей, добавив несколько раз, убрав один из середины и снова добавив элемент. KeyedCollection добавляет новый элемент в конец, Словарь поместил его в исходное положение (я предполагаю, что там происходит какое-то хеширование)

0
ответ дан 14 December 2019 в 09:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: