как получить ключ из значения в хеш-таблице

#c#

#c#

Вопрос:

У меня есть хеш-таблица с ключом и значениями, и в моем коде я повторяю хеш-таблицу по значениям, как показано ниже :

 foreach (Object clientObject in ClientList.Values)
{
    // code to perform operation based on value
    ......
}
  

Где список клиентов — это хеш-таблица.
Теперь я хочу получить ключ соответствующего значения из хеш-таблицы в моем коде. есть ли какой-нибудь способ добиться этого?

Спасибо

Ответ №1:

Вам нужно выполнить итерацию по таблице таким образом:

         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());
        }
  

Комментарии:

1. Спасибо, я думаю, что ваш способ итерации лучше решит мою проблему.

Ответ №2:

Если вы хотите, чтобы список keys имел определенное значение, используя LINQ (.NET> = 3.5)

 object searchedValue = something;

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

Вероятно, это не то, что вы хотели, но это то, что вы просили.

(код означает: возьмите все элементы ClientList (каждый элемент является «кортежем» ключа и значения) и выполните поиск того (ов), значение которого равно искомому значению. Возьмите ключи этих элементов.

Комментарии:

1. Спасибо. Мы можем получить ключ, используя linq, как и ваш код. но лучше я повторяю хеш-таблицу, как упоминал Фишерман.

Ответ №3:

Невозможно получить ключ, используя значение.

Одна из причин заключается в том, что ключ уникален, а значение не уникально в хеш-таблице.

Вы можете использовать способ @Fischermaen для чтения значения.