Могу ли я получить ключ хэш-таблицы по значению. Я пытаюсь найти и кодировать, но не добиться успеха. Любой может мне помочь.Как получить ключ хэш-таблицы по значению
Благодаря somuch
Могу ли я получить ключ хэш-таблицы по значению. Я пытаюсь найти и кодировать, но не добиться успеха. Любой может мне помочь.Как получить ключ хэш-таблицы по значению
Благодаря somuch
Вы должны вручную перебрать KeyValuePair<>
с в словаре, пока не найдете соответствующее значение.
Это будет dictionnary, а не хэш-таблица (но вопрос OP не имеет смысла, так что может быть и так). –
@Cicada: Да; Я пытался тонко намекнуть, что OP должен использовать дженерики. – SLaks
Если вы используете Hashtable class, переписчик вернулся является IDictionaryEnumerator, который позволит вам сделать:
object key;
foreach (DictionaryEntry entry in theHashTable)
{
if (entry.Value == theValue)
{
key = entry.Key;
break;
}
}
Это, как говорится, я настоятельно рекомендовал бы другую структуру данных. Если ничего другого, обновление до использования Dictionary<TKey, TValue>
обеспечит безопасность типа, хотя вам все равно придется перебирать пункты KeyValuePair<TKey, TValue)
в словаре, чтобы найти ключ, соответствующий значению.
Более компактная версия, вероятно, будет 'myHashtable.Where (de => de.Value == theValue). Выберите (de => de.Key) .First()' –
Обратите внимание, что может быть несколько разных ключей, которые все имеют одно и то же значение, поэтому, если вы вручную не убедитесь, что значения уникальны, вы не сможете определить, какая из клавиш соответствует определенному значению. – Servy
@ AvnerShahar-Kashtan Это будет работать без '.Cast
Что вы имеете в виду? –
У меня такое ощущение, что вы не используете правильную структуру данных для того, что вы пытаетесь достичь. –
Хотя вопрос не сформулирован хорошо и имеет мало деталей, здесь есть отдельный, реальный вопрос. –