C # Перебор словаря, отсортированного по значению - PullRequest
9 голосов
/ 14 января 2012

Есть ли способ перебора словаря в отсортированном порядке, отсортированному по VALUE, а не по ключу?Я прочитал об объекте "SortedDictionary", но, к сожалению, он отсортирован по ключу.Одним из решений было бы для меня перевернуть все мои ключи с моими значениями и поместить их в SortedDictionary (так как все они являются целыми числами) - однако я также не совсем уверен, как поступить с этим.

Ответы [ 3 ]

19 голосов
/ 14 января 2012

Получить пары ключей / значений, отсортировать их и выполнить итерацию.Слишком легко с помощью LINQ:

foreach(var pair in dictionary.OrderBy(p => p.Value)) {
    // work with pair.Key and pair.Value
}
0 голосов
/ 18 февраля 2013

// сортировка словаря по значению

foreach (KeyValuePair<datatype, datatype> item in dictionary)
{
//do something by value....accessing item.value
}
0 голосов
/ 14 января 2012

Для завершения предложенный выше код (dictionary.OrderBy (p => p.Value)) "не будет" работать для пользовательских типов.

OrderBy использует IComparable, чтобы иметь возможность сравнивать два объекта,Если значение в вашем словаре является пользовательским типом, тогда оно должно реализовать IComparable, чтобы иметь возможность правильно сортировать значения.

Читайте здесь .

...