C#SortedDictionary产生不寻常的结果

Jam*_*mes 2 c# sorteddictionary

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

SortedDictionary<int,string> dic = new SortedDictionary<int,string>();
Run Code Online (Sandbox Code Playgroud)

现在说我添加像这样的值

dic.Add(100,"String 1");
dic.Add(1113,"String 2");
dic.Add(1,"String 3");
dic.Add(70,"String 4");
Run Code Online (Sandbox Code Playgroud)

然后做一个类似的foreach循环

foreach(string item in dic.Values) {
        Console.WriteLine(item);
}
Run Code Online (Sandbox Code Playgroud)

那么价值永远不会以正确的顺序出现,它们以几乎随机的顺序出现,这与正常的词典相似.有人有任何想法吗?我错过了/做错了吗?

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


似乎我可能已经过度简化了问题,但它不应该有所作为,涉及很多嵌套,最后的字典实际上是另一个字典的孩子,这是另一个字典的孩子!

SortedDictionary<String, SortedDictionary<String, SortedDictionary<int, SortedDictionary<String, String>>>>()
Run Code Online (Sandbox Code Playgroud)

我正在循环的字典是

SortedDictionary<int, SortedDictionary<String, String>>
Run Code Online (Sandbox Code Playgroud)

这是所要求的循环:

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
          }
    }
}
Run Code Online (Sandbox Code Playgroud)

barArray是我们的Primary SortedDictionary(这个问题的主题)openTrades是另一个SortedDictionary

谢谢詹姆斯

Bro*_*ass 8

SortedDictionary按键 排序而不是值.

如果您执行以下操作

foreach(var item in dic)
{
        Console.WriteLine(item.Key + "-" + item.Value);
}
Run Code Online (Sandbox Code Playgroud)

您将看到它按键按排序顺序打印出来:

1-String 3
70-String 4
100-String 1
1113-String 2
Run Code Online (Sandbox Code Playgroud)