Я работаю с 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);
}
тогда значения никогда не выходят в правильном порядке, они выходят в почти случайном порядке, который похож на поведение обычного словаря. У кого-нибудь есть идеи, почему? я пропускаю / делаю что-то не так?
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
Спасибо
Джеймс