不使用 Linq OrderBy 订购字典

Flu*_*uup 3 c# dictionary ordereddictionary

我正在尝试按 C#Dictionary<int, int>的值排序,而不使用 LINQ OrderBy,因为 iPhone 不支持它。

我似乎无法弄清楚,所以非常感谢您的帮助!

Tim*_*mwi 6

有很多可能的方法可以做到这一点。以下所有假设myDictionary都是要排序的原始字典。

\n\n

\xe2\x91\xa0 创建一个列表,然后对列表进行排序

\n\n
var myList = myDictionary.ToList();\nmyList.Sort((a, b) => a.Value.CompareTo(b.Value));\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x91\xa1 创建一个数组,然后对数组进行排序

\n\n
var myArray = myDictionary.ToArray();\nArray.Sort(myArray, (a, b) => a.Value.CompareTo(b.Value));\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x91\xa2 创建一个新的 SortedDictionary,其中交换了键和值

\n\n

仅当您知道每个值仅出现一次时,此解决方案才适用。

\n\n
var mySortedDict = new SortedDictionary<int, int>();\nforeach (var kvp in myDictionary)\n    mySortedDict[kvp.Value] = kvp.Key;\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x91\xa3 创建一个新的 SortedDictionary 并使用值列表

\n\n

仅当值可以出现多次时,此解决方案才适用。

\n\n
var mySortedDict = new SortedDictionary<int, List<int>>();\nforeach (var kvp in myDictionary)\n{\n    if (!mySortedDict.ContainsKey(kvp.Value))\n        mySortedDict[kvp.Value] = new List<int>();\n    mySortedDict[kvp.Value].Add(kvp.Key);\n}\n
Run Code Online (Sandbox Code Playgroud)\n