【发布时间】:2012-05-30 19:33:35
【问题描述】:
我可以按值获取哈希表的键吗?我尝试查找和编码,但没有成功。任何人都可以帮助我。
非常感谢
【问题讨论】:
-
我感觉您没有使用正确的数据结构来实现您想要实现的目标。
-
虽然这个问题措辞不好,细节也很少,但这里有一个独特而真实的问题。
我可以按值获取哈希表的键吗?我尝试查找和编码,但没有成功。任何人都可以帮助我。
非常感谢
【问题讨论】:
如果您使用的是Hashtable class,则返回的枚举数是IDictionaryEnumerator,这应该允许您这样做:
object key;
foreach (DictionaryEntry entry in theHashTable)
{
if (entry.Value == theValue)
{
key = entry.Key;
break;
}
}
话虽如此,我强烈推荐一种不同的数据结构。如果不出意外,升级到使用 Dictionary<TKey, TValue> 将提供类型安全性,但您仍需要遍历 Dictionary 中的 KeyValuePair<TKey, TValue) 项以查找与值匹配的键。
【讨论】:
myHashtable.Where(de => de.Value == theValue).Select(de => de.Key).First()
.Where 之前没有.Cast<DictionaryEntry>() 将会失败
您需要手动循环遍历字典中的KeyValuePair<>s,直到找到匹配的值。
【讨论】: