按价值获得字典键

可能重复:
获得通用字典价值的关键?

如何通过C#中的值获取Dictionary键?

Dictionary<string, string> types = new Dictionary<string, string>()
{
            {"1", "one"},
            {"2", "two"},
            {"3", "three"}
};

我想要这样的东西:

getByValueKey(string value);

getByValueKey("one")必须返回"1"

这样做的最佳方式是什么? 也许HashTable,SortedLists?


值不一定必须是唯一的,因此您必须执行查找。 你可以做这样的事情:

var myKey = types.FirstOrDefault(x => x.Value == "one").Key;

如果值是唯一的并且插入的次数少于读取次数,则创建一个反向字典,其中值是键,键是值。


你可以这样做:

  • 通过遍历字典中的所有KeyValuePair<TKey, TValue> (如果字典中有许多条目,这将会带来巨大的性能下降)
  • 使用两个字典,一个用于值到键的映射,另一个用于键值映射(这会占用内存空间的两倍)。
  • 如果不考虑性能,请使用方法1,如果不考虑内存,请使用方法2。

    此外,所有密钥必须是唯一的,但值不必是唯一的。 您可能有多个具有指定值的键。

    你有什么理由不能扭转关键价值关系吗?


    如果这个值存在多于一个密钥会怎么样?

    应该返回哪个密钥?

    为了避免做出假设,Microsoft没有包含GetKey方法。

    链接地址: http://www.djcxy.com/p/30411.html

    上一篇: get dictionary key by value

    下一篇: Can the Dictionary be as fast?