我使用StringDictionary来存储键值对。我需要交替使用键和值,即我应该能够从值中获取键,因为在我的情况下,值将是不同的。
有没有直接的方法可以做到(没有循环)?或者,如果有任何其他收藏我可以用来实现这个目标吗?
目前我正在循环播放:
public String GetKeyFromValue(string value)
{
foreach (KeyValuePair<string, string> kvp in instance)
{
if (String.Equals(kvp.Value, value))
return kvp.Key;
}
throw new Exception ("Key not found in FilterControlMapping");
}
非常感谢任何帮助。 感谢。
答案 0 :(得分:5)
答案 1 :(得分:2)
我能想到的唯一方法就是两本词典。
D1&lt;键,值&gt; D2&lt;价值,关键&gt;
你会重复你的数据。但是你可以用这种方式搜索键和值。
答案 2 :(得分:0)
这也可以使用Dictionary:
Dictionary<string, string> sd = new Dictionary<string, string>();
string sKey = sd.Single(kvp => kvp.Value.Equals("A value")).Key;
请注意,如果值多次出现,则抛出Single方法。您可以使用First或甚至FirstOrDefault。
编辑: 正如Jon Skeet评论的那样,这仍然是循环的。他发布到链接词典的链接提供了解决方案。
答案 3 :(得分:0)
最好的想法是使用Dictionary而不是StringDictionary作为它的obselete .. 你可以在这里找到更多相关信息: StringDictionary vs Dictionary<string, string> 关于回溯你应该在内部使用linq它使用循环,但仍然是更清洁的方式..