我不认为我在上一个问题中发布了足够的细节,人们似乎停止回应,所以我转发,因为我们需要知道为什么会出现这个问题
我正在使用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显然没有意义,因为这是一个排序字典。
我很高兴能够尽快得到任何帮助。 谢谢 詹姆斯
答案 0 :(得分:0)
我的直觉是你误解了你所看到的结果。在您显示的循环中,您没有循环遍历int键,而是循环遍历值列表。因此,您无法确定实际返回int键的顺序。
您可能在SortedDictionary本身中有一些东西,它应该指示它所属的封闭字典中的哪个int。我想,你在如何形成这些值时会有一些错误,因此键中的int实际上与值不匹配。
我建议缩小问题范围,通过openTrade
而不是openTrades.Values
进行预测。这样您就可以在返回的KeyValuePair中看到真正的密钥。我很确定它们会出现分类。