通过值获取字典的键
如何在C#中通过值获得一个字典的键?
Dictionary<string, string> types = new Dictionary<string, string>()
{
{"1", "one"},
{"2", "two"},
{"3", "three"}
};
我想要这样的东西。
getByValueKey(string value);
getByValueKey("one")
必须返回"1"
。
什么是最好的方法?也许是HashTable,SortedLists?
334
8
值不一定是唯一的,所以你必须做一个查询。你可以这样做。
如果值是唯一的,而且插入的频率比读取的频率低,那么就创建一个反转字典,其中值是键,键是值。
你可以这样做。
1.通过循环浏览字典中所有的
KeyValuePair
's(如果你在字典中有许多条目,这将是一个相当大的性能打击)。 2.使用两个字典,一个用于值到键的映射,一个用于键到值的映射(这将占用两倍于内存的空间)。如果性能不是一个考虑因素,就使用方法1,如果内存不是一个考虑因素,就使用方法2。
另外,所有的键必须是唯一的,但值不要求是唯一的。 你可以有一个以上的具有指定值的键。
有什么理由你不能颠倒键值关系吗?
我当时的情况是,Linq绑定不可用,不得不显式扩展lambda。 结果得到了一个简单的函数。
称之为如下。
在.NET 2.0和其他有限的环境中工作。
我已经创建了一个双查找类。
也许是这样的。
Values.ToList() 将你的字典值转换为一个对象列表。 IndexOf("one") 搜索你的新List,寻找"one" 并返回与字典中的键/值对的索引相匹配的索引。
这个方法不关心字典中的键,它只是返回你正在寻找的值的索引。
请记住,在你的字典中可能有多个"one" 值。 这就是没有"get key".方法的原因。 方法的原因。
下面的代码只有在包含唯一值数据的情况下才会生效
我有非常简单的方法来做到这一点。它对我来说是完美的。