#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 для чтения значения.