3 回答
TA贡献1891条经验 获得超3个赞
您可以这样做:
通过遍历
KeyValuePair<TKey, TValue>
字典中的所有数字(如果您在字典中有许多条目,这将对性能产生很大的影响)使用两个字典,一个用于值到键的映射,另一个用于键到值的映射(这将占用内存的两倍)。
如果不考虑性能,则使用方法1;如果不考虑内存,则使用方法2。
同样,所有键都必须是唯一的,但是值不必是唯一的。您可能有多个具有指定值的键。
有什么原因不能扭转键值关系?
TA贡献1816条经验 获得超4个赞
我处于无法使用Linq绑定并且必须显式扩展lambda的情况。它产生了一个简单的功能:
public static T KeyByValue<T, W>(this Dictionary<T, W> dict, W val)
{
T key = default;
foreach (KeyValuePair<T, W> pair in dict)
{
if (EqualityComparer<W>.Default.Equals(pair.Value, val))
{
key = pair.Key;
break;
}
}
return key;
}
如下调用:
public static void Main()
{
Dictionary<string, string> dict = new Dictionary<string, string>()
{
{"1", "one"},
{"2", "two"},
{"3", "three"}
};
string key = KeyByValue(dict, "two");
Console.WriteLine("Key: " + key);
}
适用于.NET 2.0和其他受限环境。
- 3 回答
- 0 关注
- 460 浏览
添加回答
举报