C# 如何从哈希表中的值获取密钥

C# 如何从哈希表中的值获取密钥,c#,C#,我有一个包含键和值的哈希表,在我的代码中,我通过如下值迭代哈希表: foreach (Object clientObject in ClientList.Values) { // code to perform operation based on value ...... } 其中ClientList是hashtable。 现在,我想在代码中从哈希表中获取相关值的键。有没有办法做到这一点 谢谢您必须以这种方式遍历该表: Hashtable clientList

我有一个包含键和值的哈希表,在我的代码中,我通过如下值迭代哈希表:

foreach (Object clientObject in ClientList.Values)
{
    // code to perform operation based on value
    ......
}
其中ClientList是hashtable。 现在,我想在代码中从哈希表中获取相关值的键。有没有办法做到这一点


谢谢

您必须以这种方式遍历该表:

        Hashtable clientList = new Hashtable();

        foreach (DictionaryEntry dictionaryEntry in clientList)
        {
            // work with value.
            Debug.Print(dictionaryEntry.Value.ToString());

            // work with key.
            Debug.Print(dictionaryEntry.Key.ToString());
        }

使用该值无法获取密钥

原因之一是哈希表中的键是唯一的,值不是唯一的。


您可以使用@Fischermaen方式读取值。

如果您需要具有特定值的
键列表,请使用LINQ(.NET>=3.5)

objectsearchedvalue=something;
IEnumerable keys=ClientList.Cast()。其中(p=>ClientList.Values==searchedValue)。选择(p=>p.Key);
这可能不是你想要的,但这是你要求的


(代码的意思是:获取
ClientList
的所有元素(每个元素都是键和值的“元组”)并搜索其中一个(s)它的值等于搜索的值。获取这些元素的键。

谢谢,我认为你的迭代方式更好地解决了我的问题。谢谢。我们可以像你的代码一样使用linq来获取键。但我最好像Fischermaen提到的那样迭代哈希表。
object searchedValue = something;

IEnumerable<object> keys = ClientList.Cast<DictionaryEntry>().Where(p => ClientList.Values == searchedValue).Select(p => p.Key);