C # SortedDictionary, выдающий необычные результаты - Mk2 - PullRequest
1 голос
/ 13 июня 2011

Не думаю, что я опубликовал достаточно подробностей в предыдущем вопросе, и люди, похоже, перестали отвечать, поэтому я делаю репосты, так как нам нужно знать, почему происходит эта проблема

Я работаю с 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 - это наш основной SortedDictionary(предмет этого вопроса) openTrades - это еще один SortedDictionary

Теперь, когда мы перебираем словарь с целым числом в качестве индекса, мы получаем различные результаты - IE.если у нас есть 1,2,3,4 в качестве ключей при циклическом прохождении, они могут представлять их в следующем порядке: 4,2,1,3, что явно не имеет смысла, поскольку это должен быть отсортированный словарь.

Любая помощь как можно скорее будет принята с благодарностью, поскольку я поставлен в тупик по этому вопросу.Спасибо Джеймс

1 Ответ

0 голосов
/ 13 июня 2011

Мое инстинктивное чувство заключается в том, что вы неверно истолковываете результаты, которые вы видите.В цикле, который вы показываете, вы не перебираете ключ int, вы перебираете список значений.Таким образом, у вас нет возможности определить, в каком порядке фактически возвращаются ключи int.

Возможно, у вас есть что-то в самом SortedDictionary, которое должно указывать, к какому int из вложенного словаря оно принадлежит.Я хотел бы представить, что есть некоторая ошибка в том, как вы формируете эти значения, так что int в ключе на самом деле не соответствует значению.

Я предлагаю сузить проблему, которую вы рассматриваете через1005 * с, а не openTrades.Values.Таким образом, вы сможете увидеть реальные ключи в возвращенной KeyValuePair.Я почти уверен, что они будут отсортированы.

...