我正在使用SortedDictionary,其中键是整数,值是字符串。

SortedDictionary<int,string> dic = new SortedDictionary<int,string>();


现在说我添加像

dic.Add(100,"String 1");
dic.Add(1113,"String 2");
dic.Add(1,"String 3");
dic.Add(70,"String 4");


然后做一个foreach循环

foreach(string item in dic.Values) {
        Console.WriteLine(item);
}


那么这些值就永远不会以正确的顺序出现,而是以几乎随机的顺序出现,这与普通的Dictionary相似。有人知道为什么吗?我想念/做错了什么吗?

PS:当我说它以随机顺序出现时,我的意思是按键顺序没有价值,所以它的发出像是1113、70、1,100



看来我可能已经简化了这个问题,但它不应该有所作为,涉及很多嵌套,最终的词典实际上是另一本词典的子代,而另一本词典又是另一本的子代!

SortedDictionary<String, SortedDictionary<String, SortedDictionary<int, SortedDictionary<String, String>>>>()


我正在浏览的字典是

SortedDictionary<int, SortedDictionary<String, String>>


这是请求的循环:

foreach (SortedDictionary<String, String> cDic in openTrades.Values)
{
    String cTimestamp = convertTimestamp(cDic["open"]);
    if (!closeTrades.ContainsKey(cDic["key"]) && barArray.ContainsKey(cDic["pair"]))
    {
          foreach (SortedDictionary<String, String> bDic in barArray[cDic["pair"]][cDic["frame"]].Values)
          {
               //This is the relative Loop
          }
    }
}


barArray是我们的主要SortedDictionary(此问题的主题)
openTrades是另一个SortedDictionary

谢谢
詹姆士

最佳答案

SortedDictionary对键而不是值进行排序。

如果您执行以下操作

foreach(var item in dic)
{
        Console.WriteLine(item.Key + "-" + item.Value);
}


您会看到它按键排序输出:

1-String 3
70-String 4
100-String 1
1113-String 2

10-05 18:45