2013-11-22 40 views
0

我有一个SortedList,它显然是按键排序的。在代码的某处,我想通过值而不是密钥对它进行排序,所以我必须重新插入SortedList的值和密钥交换?我将如何交换密钥和价值?创建另一个SortedList并执行一个foreach循环来加载它?通过密钥来使用SortedList

+0

http://stackoverflow.com/questions/1250281/c-sharp-how-to-sort-a-sorted-list-by-其值列 –

+0

您可以在移动值的同时执行foreach,或者执行扩展方法以使其更灵活。 – DevEstacion

+0

或者使用2个排序列表将键/值添加到一个列表中,交换它们并将它们添加到另一个列表中。这样一切都在原始枚举中处理。当然,假设你的数据没有数百万条记录 – tinstaafl

回答

0

使这一个匆忙。这将转移类型,与钥匙归还和价值转移

public static class Extension 
    { 
     public static SortedList<TValue, TKey> ShiftKeyValuePair<TKey, TValue>(this SortedList<TKey, TValue> instance) 
     { 
      SortedList<TValue, TKey> key = new SortedList<TValue, TKey>(); 
      foreach (var item in instance) 
       key.Add(item.Value, item.Key); 
      return key; 
     } 
    } 
+0

我刚刚发布的实现如何,它会起作用吗? –

+0

@HarrisCalvin它在哪里?如果你在网络4.0上,也许你可以使用任务并行库来加速它。 – DevEstacion