2011-02-01 111 views
2

我有兩個字典:排序字典使用其他字典的鍵的值

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

我想通過值排序的第一個字典(即人(S))訂購它完全一樣的順序第二個詞典中的鍵(即Person(s))。最簡單的方法是什麼?

+7

`Dictionary` s的不排序,所以你是什麼意思的第二個`Dictionary`按鍵的順序?你的意思是你有`IComparer `?無論如何,排序字典意味着什麼? – jason 2011-02-01 13:15:52

+2

多吃雞肉。接受更多答案。 – jason 2011-02-01 13:16:54

回答

0

嘗試以下操作:

var ordered = dictionary1.OrderBy(p => dictionary2[p.Value]).ToArray(); 
0
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); 
}