我正在阅读有关排序字典的一些信息,因为我之前从未使用过任何非常详细的字典。
从我读到的关于它们的内容来看,它们按照其中的关键价值进行排序。那是对的吗?此外,字典是否会根据读入的值不断自动排序?
如果是这样,有没有办法可以改变这个,所以字典通过与键相关的值来自行排序。例如,我有一个带有以下内容的排序字典:
Key: 4 Value: 40
Key: 1 Value: 290
Key: 86 Value: 7
排序后的字典会对其进行排序:
Key: 1 Value: 290
Key: 4 Value: 40
Key: 86 Value: 7
但我希望它能做到以下几点:
Key: 86 Value: 7
Key: 4 Value: 40
Key: 1 Value: 290
最后,我将如何访问此排序的第一和第二点,以便将其分配给其他内容?
答案 0 :(得分:0)
默认情况下SortedDictionary<TKey, TValue>
根据Sorting
执行Key
,而不是Value
执行。{/ p>
但是如果你想根据Value
进行排序,你可以使用LINQ OrderBy()
方法:
来自MSDN:SortedDictionary
表示按键排序的键/值对的集合。
试试这个:
var SortedByValueDict = dict.OrderBy(item => item.Value);
完整代码:
class Program
{
static void Main(string[] args)
{
SortedDictionary<int, int> dict = new SortedDictionary<int, int>();
dict.Add(4, 40);
dict.Add(1, 290);
dict.Add(86, 7);
Console.WriteLine("Sorted Dictionary Items sorted by Key");
foreach (var v in dict)
{
Console.WriteLine("Key = {0} and Value = {1}", v.Key, v.Value);
}
Console.WriteLine("------------------------\n");
Console.WriteLine("Sorted Dictionary Items sorted by Value");
var SortedByValueDict = dict.OrderBy(item => item.Value);
foreach (var v in SortedByValueDict)
{
Console.WriteLine("Key = {0} and Value = {1}", v.Key, v.Value);
}
}
}
输出
Sorted Dictionary Items sorted by Key
Key = 1 and Value = 290
Key = 4 and Value = 40
Key = 86 and Value = 7
------------------------
Sorted Dictionary Items sorted by Value
Key = 86 and Value = 7
Key = 4 and Value = 40
Key = 1 and Value = 290