C# 按键调用分类列表

C# 按键调用分类列表,c#,sortedlist,C#,Sortedlist,我有一个分类列表,显然是按键分类的。在代码下面的某个地方,我想按值而不是键对其进行排序,那么我是否必须在值和键交换的情况下重新插入SortedList?如何交换键和值?创建另一个SortedList并执行foreach循环加载到该列表中?匆忙创建了此列表。这将移动类型,并在键和值移动的情况下返回它 public static class Extension { public static SortedList<TValue, TKey> ShiftKeyVal

我有一个分类列表,显然是按键分类的。在代码下面的某个地方,我想按值而不是键对其进行排序,那么我是否必须在值和键交换的情况下重新插入SortedList?如何交换键和值?创建另一个SortedList并执行foreach循环加载到该列表中?

匆忙创建了此列表。这将移动类型,并在键和值移动的情况下返回它

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;
        }
    }
公共静态类扩展
{
公共静态SortedList ShiftKeyValuePair(此SortedList实例)
{
SortedList键=新的SortedList();
foreach(实例中的var项)
key.Add(item.Value,item.key);
返回键;
}
}

您可以在移动值时进行foreach操作,也可以使用扩展方法使其更灵活。或者使用2个分类列表将键/值添加到一个列表中,交换键/值并将其添加到另一个列表中。这样,所有内容都在原始枚举中处理。当然,假设您的数据没有数百万的entries@tinstaafl是的,这也是我在解决方案中的想法。我想知道是否还有其他方法可以做同样的事情。我想这是最简单、最简单的方法。@HarrisCalvin我在下面使用扩展方法和generics@HarrisCalvin它在哪里?如果你在NET4.0上,也许你可以使用任务并行库来加速它。