1

私はこれを20分間グーグルで検索しました。これが重複している場合はご容赦ください。

だから私は app.config ファイルから読んでいて、キーと値のペアがたくさんあります

{'a','1'},{'b','5'},{'c','9'} ... etc

キーを与えるときに値を見つけるのは簡単です。しかし、逆に行くのは思ったよりも難しいことがわかりました。

奇妙なことに、msdn の API は逆検索について何も言及していないようです。
許可されている場合、「1」しか与えられなかった場合、キーの値をどのように見つけますか?

4

2 に答える 2

5

AllKeys私が考えることができる最も良い方法は、プロパティでLinqを使用することです:

myNameValueCollection.AllKeys.First(key => myNameValueCollection[key] == myValue);

NameValueCollection実装されていないのは残念ですIEnumerable<KeyValuePair<string, string>>

あなたのコメントから、Linq にあまり詳しくないことがわかります。コメントにいくつかのリンクを用意しました。この特定の Linq クエリは、非常に簡潔に記述された次のものとほぼ同等です。

foreach(var key in myNameValueCollection.AllKeys)
{
    var value = myNameValueCollection.AllKeys[key];
    if (value == myValue)
    {
        return value;
    }
}
于 2013-05-13T23:54:37.043 に答える
1

もちろん、ハッシュ関数は値ではなくキーに適用されるため、これは一方通行です。ただし、値が異なる場合は、明らかな回避策があります (必ずしもそうである必要はないことに注意してください)。値によるルックアップを繰り返し行う場合は、コメントでの Eugen の提案がおそらく最適です。1 回限りの解決策を探している場合は、値の一致をチェックするキーをループするだけです。値が一致すると、関連付けられているキーがわかります。

于 2013-05-13T23:55:07.847 に答える