C#迭代字典按值排序

时间:2012-01-14 03:39:18

标签: c# dictionary loops sorted

有没有办法按排序顺序迭代字典,按VALUE而非按键排序? 我确实阅读了“SortedDictionary”对象,但遗憾的是,它是按键排序的。 一个解决方案是让我用我的值翻转我的所有键,并将它们放入SortedDictionary(因为它们都是整数) - 但是,我不完全确定如何使用那个。

3 个答案:

答案 0 :(得分:19)

获取键/值对,排序和迭代。使用LINQ很容易死:

foreach(var pair in dictionary.OrderBy(p => p.Value)) {
    // work with pair.Key and pair.Value
}

答案 1 :(得分:0)

完成后,上面建议的代码(dictionary.OrderBy(p => p.Value))“将不适用于自定义类型。

OrderBy使用IComparable来比较两个对象。如果字典中的值是自定义类型,则必须实现IComparable才能以正确的方式对值进行排序。

继续阅读here

答案 2 :(得分:0)

//按值排序字典

foreach (KeyValuePair<datatype, datatype> item in dictionary)
{
//do something by value....accessing item.value
}