我想按值对C# Dictionary<int, int>
进行排序,但不能使用LINQ的OrderBy
,因为它不支持iPhone。
我似乎无法弄清楚,所以非常感谢您的帮助!
我想按值对C# Dictionary<int, int>
进行排序,但不能使用LINQ的OrderBy
,因为它不支持iPhone。
我似乎无法弄清楚,所以非常感谢您的帮助!
有许多可能的方法来做到这一点。以下所有方法都假设myDictionary
是要排序的原始字典。
var myList = myDictionary.ToList();
myList.Sort((a, b) => a.Value.CompareTo(b.Value));
var myArray = myDictionary.ToArray();
Array.Sort(myArray, (a, b) => a.Value.CompareTo(b.Value));
只有当您知道每个值只出现一次时,此解决方案才是合适的。
var mySortedDict = new SortedDictionary<int, int>();
foreach (var kvp in myDictionary)
mySortedDict[kvp.Value] = kvp.Key;
如果值可以出现多次,那么这种解决方案是合适的。
var mySortedDict = new SortedDictionary<int, List<int>>();
foreach (var kvp in myDictionary)
{
if (!mySortedDict.ContainsKey(kvp.Value))
mySortedDict[kvp.Value] = new List<int>();
mySortedDict[kvp.Value].Add(kvp.Key);
}
List
的 KeyValuePair
,然后使用 Sort
进行排序。 Dictionary<int, int> myList = new Dictionary<int, int>();
List<KeyValuePair<int, int>> mySortedList = myList.ToList();
mySortedList.Sort(( firstValue, nextValue) =>
{
return firstValue.Value.CompareTo(nextValue.Value);
}
);
Dictionary<int, int> mySortedDict = mySortedList.ToDictionary(keyItem => keyItem.Key, keyItem => keyItem.Value);
我认为Sort
将会在iPhone上得到支持。