C#SortedDictionary产生不寻常的结果 - Mk2

时间:2011-06-13 12:26:51

标签: c# sorteddictionary

我不认为我在上一个问题中发布了足够的细节,人们似乎停止回应,所以我转发,因为我们需要知道为什么会出现这个问题

我正在使用SortedDictionary,当我们遍历它时,我们会得到奇怪的结果。

涉及很多嵌套,最后的字典实际上是另一个字典的孩子,而另一个字典是另一个字典的孩子!

是完整的巢。

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是我们的Primary SortedDictionary(这个问题的主题) openTrades是另一个SortedDictionary

现在,当我们以整数作为索引遍历字典时,我们会得到不同的结果 - IE。如果我们在循环时有1,2,3,4作为键可以按顺序显示它们:4,2,1,3显然没有意义,因为这是一个排序字典。

我很高兴能够尽快得到任何帮助。 谢谢 詹姆斯

1 个答案:

答案 0 :(得分:0)

我的直觉是你误解了你所看到的结果。在您显示的循环中,您没有循环遍历int键,而是循环遍历值列表。因此,您无法确定实际返回int键的顺序。

您可能在SortedDictionary本身中有一些东西,它应该指示它所属的封闭字典中的哪个int。我想,你在如何形成这些值时会有一些错误,因此键中的int实际上与值不匹配。

我建议缩小问题范围,通过openTrade而不是openTrades.Values进行预测。这样您就可以在返回的KeyValuePair中看到真正的密钥。我很确定它们会出现分类。