Хорошо, я пытаюсь выполнить вот что: у меня есть словарь с данными, которые выглядят так:
Unsorted:
US ( total population: 9 )
-New York - 4
-Miami - 5
Spain ( total population: 4 )
-Madrid - 3
-Barcelona - 1
France ( total population: 7 )
-Paris - 7
Мне нужно отсортировать словари по Странам снаибольшее население, а затем каждый город по численности населения, так что это выглядит примерно так:
Сортировка:
US ( total population: 9 )
-Miami - 5
-New York - 4
France ( total population: 7 )
-Paris - 7
Spain ( total population: 4 )
-Madrid - 3
-Barcelona - 1
У меня есть:
var worldPopulation = new Dictionary<string, Dictionary<string, long>>();
Я уже отсортировал страныиспользуя эту строку кода:
worldPopulation = worldPopulation.OrderByDescending(x => x.Value.Values.Sum()).ToDictionary(x => x.Key, x => x.Value);
Но я изо всех сил пытаюсь найти решение для сортировки вложенного словаря по странам.
Я пытаюсь сделать это с помощью одного оператора linq,но если это невозможно, будет также приветствоваться решение foreach.Спасибо!
РЕДАКТИРОВАТЬ:
@ J_L Решение было именно то, что я искал:
worldPopulation = worldPopulation.OrderByDescending(x => x.Value.Values.Sum()).ToDictionary(x => x.Key, x => x.Value.OrderByDescending(y => y.Value).ToDictionary(y => y.Key, y => y.Value));
Решение @ Lucifer также заставило его работать:
var worldPopulationSorted = new Dictionary<string, Dictionary<string, long>>();
worldPopulation.OrderByDescending(dic => dic.Value.Values.Sum()).ToList().ForEach(x => worldPopulationSorted.Add(x.Key, x.Value.OrderByDescending(y => y.Value).ToDictionary(y => y.Key, y => y.Value)));
Я понимаю, что некоторые из вас говорят мне использовать другой подход, поэтому постараюсь использовать списки, как некоторые из вас предложили,Я также узнал некоторые новые вещи, поэтому спасибо всем за помощь.