c # сортировка StringDictionary по значению, а не ключ

Каков наилучший способ сортировки (или итерации) по StringDictionary в порядке значения (не ключа)

например. Ключ - Значение

  • 1 - метка X
  • 2 - ярлык
  • 3 - Другой ярлык

даст

  • 2 - ярлык
  • 3 - Другой ярлык
  • 1 - метка X

РЕДАКТИРОВАТЬ - я хотел сказать "используя функции .NET 2.0". Извини, мне плохо ...

10 голосов | спросил Ryan 26 J000000Monday10 2010, 18:43:01

1 ответ


0

Используя класс StringDictionary, здесь приведен метод использования OrderBy. Предполагается, что у вас есть .NET 3.5.

var sortedDictionary = dictionary.Cast<DictionaryEntry>().OrderBy(pair => pair.Value);

Используя 2.0, это немного сложнее. Вот подход с использованием делегата сравнения.

StringDictionary dictionary = new StringDictionary();
dictionary.Add("1", "One");
dictionary.Add("2", "Two");
dictionary.Add("3", "Three");

DictionaryEntry[] sortedDictionary = new DictionaryEntry[dictionary.Count];
dictionary.CopyTo(sortedDictionary, 0);
Comparison<DictionaryEntry> comparison = new Comparison<DictionaryEntry>(delegate (DictionaryEntry obj1, DictionaryEntry obj2) { return ((string)obj1.Value).CompareTo((string)obj2.Value); });
Array.Sort(sortedDictionary, comparison);

Таким образом, фактическая сортировка будет в массиве sortedDictionary.

ответил Anthony Pegram 26 J000000Monday10 2010, 18:49:01

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132