.NET SortedDictionary但按值排序

我需要一个像SortedDictionary一样的数据结构,但是它是根据值而不是键来排序的。 当我们在字典中有大约3000个项目时,我需要大约1-2微秒来添加和删除项目。

我的第一个想法是简单地在我的代码中切换键和值。 这几乎是有效的。 通过这样做,我可以在测试中添加和删除大约1.2微秒的元素。

但是密钥必须在SortedDictionary中是唯一的,这意味着我的逆字典中的值必须是唯一的。 在某些情况下,他们可能不会。

.NET库中的某些想法已经对我有用吗?

PowerCollections库有一个名为OrderedMultiDictionary ,它基本上类似于SortedDictionary但允许重复。 查找键时,您将获得可枚举而不是单个值。

该库是免费的,你应该能够完成你想要的那个类 – 将值存储为键。

您可以按如下方式对SortedDictionary进行排序:

 yourList.Sort( delegate(KeyValuePair val1, KeyValuePair val2) { return val1.Value.CompareTo(val2.Value); } );