Как я получаю ключ Словаря значением в C#?
Dictionary<string, string> types = new Dictionary<string, string>()
{
{"1", "one"},
{"2", "two"},
{"3", "three"}
};
Я хочу что-то вроде этого:
getByValueKey(string value);
getByValueKey("one")
должен быть возврат "1"
.
Каков лучший способ, делают это? Возможно, HashTable, SortedLists?
Значения не обязательно должны быть уникальными, поэтому вам придется делать поиск. Вы можете сделать что-то вроде этого:
var myKey = types.FirstOrDefault(x => x.Value == "one").Key;
Если значения уникальны и вставляются реже, чем считываются, то создайте инверсный словарь, где значения - ключи, а ключи - значения.
Это можно сделать:
KeyValuePair
в словаре (который приведет к значительному снижению производительности, если у вас есть несколько записей в словаре) Используйте метод 1, если производительность не важна, используйте метод 2, если память не важна.
Кроме того, все ключи должны быть уникальными, но значения не обязательно должны быть уникальными. У вас может быть несколько ключей с указанным значением.
Есть ли причина, по которой вы не можете изменить отношение "ключ-значение"?