自分の値のキーを取得したいのですが、ハッシュテーブルで可能で
はありません。これを行うためのデータ ストレッチャーはありますか??
Hashtable x = new Hashtable();
x.Add("1", "10");
x.Add("2", "20");
x.Add("3", "30");
x.GetKey(20);//equal 2
すべてのキーが文字列の場合。
var key = x.Keys.OfType<String>().FirstOrDefault(s => x[s] == "20")
または、代わりに Dictionary を使用することをお勧めします。
Dictionary<string, string> x = new Dictionary<string, string>();
x.Add("1", "10");
x.Add("2", "20");
x.Add("3", "30");
string result = x.Keys.FirstOrDefault(s => x[s] == "20");
値が常に 1 つの異なるキーを持つことがわかっている場合は、Single
代わりに を使用しFirstOrDefault
ます。
Linq 演算子を使用できます
x.Keys.OfType<String>().FirstOrDefault(a => x[a] == "20")
foreach で繰り返すことができます
O(1)ソリューションを探している場合Hashtable
は、このテーブルの値がキーになり、キーが対応する値になる逆も実装する必要がある場合があります。
2つ使用することを強くお勧めしますDictionary<string, string>
が、これは、アイテム間の1対1の関係であることを意味します。
var dict1 = new Dictionary<string, string>();
var dict2 = new Dictionary<string, string>();
dict1.Add("1", "10");
dict2.Add("10", "1");
dict1.Add("2", "20");
dict2.Add("20", "2");
dict1.Add("3", "30");
dict2.Add("30", "3");
var valueOfDictOne = dict1["1"];
var valueOfDictTwo = dict2["10"];