Сортировать словарь по значениям, используя ключи другого словаря - PullRequest
2 голосов
/ 01 февраля 2011

У меня есть 2 словаря:

1. Dictionary<String, Person>
2. Dictionary<Person, int>

Я бы хотел отсортировать первый словарь по значениям (то есть персоны), упорядочив его точно так же, как порядок ключей (то есть персоны) во 2-м словаре. Какой бы самый простой способ?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2016
Dictionary<string, int> first = new Dictionary<string, int>();
Dictionary<int, string> second = new Dictionary<int, string>();
first.Add("a", 1);
first.Add("c", 3);
first.Add("b", 2);
first.Add("g", 7);
first.Add("d", 4);

second.Add(3, "c");
second.Add(1, "a");
second.Add(7, "g");
second.Add(2, "b");
second.Add(4, "d");

Dictionary<string, int> final = new Dictionary<string, int>();
second.ToList().ForEach(s =>
{
    if (first.ContainsValue(s.Key))
        final.Add(s.Value, s.Key);
});

foreach (var item in final)
{
    Console.WriteLine(item.Key + " " + item.Value);
}
0 голосов
/ 01 февраля 2011

Попробуйте следующее:

var ordered = dictionary1.OrderBy(p => dictionary2[p.Value]).ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...