繁体   English   中英

在不使用Linq OrderBy的情况下订购字典

[英]Order a dictionary without using Linq OrderBy

我试图按其值订购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));

③创建一个新的SortedDictionary,其中交换了键和值

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

var mySortedDict = new SortedDictionary<int, int>();
foreach (var kvp in myDictionary)
    mySortedDict[kvp.Value] = kvp.Key;

④创建一个新的SortedDictionary并使用值列表

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

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);
}

我们可以生成一个KeyValuePair List ,然后使用Sort对其进行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);

我认为iPhone会支持Sort

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM