C#'ta bir Sözlük anahtarını değere göre nasıl alabilirim?
Dictionary<string, string> types = new Dictionary<string, string>()
{
{"1", "one"},
{"2", "two"},
{"3", "three"}
};
Böyle bir şey istiyorum:
getByValueKey(string value);
getByValueKey("one")öğesi
"1"` döndürmelidir.
Bunu yapmanın en iyi yolu nedir? Belki HashTable, SortedLists?
Değerlerin benzersiz olması gerekmez, bu nedenle bir arama yapmanız gerekir. Bunun gibi bir şey yapabilirsiniz:
var myKey = types.FirstOrDefault(x => x.Value == "one").Key;
Değerler benzersizse ve okunandan daha az sıklıkta ekleniyorsa, değerlerin anahtar, anahtarların da değer olduğu ters bir sözlük oluşturun.
Bunu yapabilirsin:
KeyValuePair<TKey, TValue>
'ler arasında döngü yaparak (sözlükte çok sayıda girişiniz varsa bu oldukça büyük bir performans darbesi olacaktır)Performans önemli değilse Yöntem 1'i, bellek önemli değilse Yöntem 2'yi kullanın.
Ayrıca, tüm anahtarlar benzersiz olmalıdır, ancak değerlerin benzersiz olması gerekmez. Belirtilen değere sahip birden fazla anahtarınız olabilir.
Anahtar-değer ilişkisini tersine çevirememeniz için herhangi bir neden var mı?
Bunu yapmanın çok basit bir yolu var. Benim için mükemmel oldu.
Dictionary<string, string> types = new Dictionary<string, string>();
types.Add("1", "one");
types.Add("2", "two");
types.Add("3", "three");
Console.WriteLine("Please type a key to show its value: ");
string rLine = Console.ReadLine();
if(types.ContainsKey(rLine))
{
string value_For_Key = types[rLine];
Console.WriteLine("Value for " + rLine + " is" + value_For_Key);
}