<p>It's easy to get the value of a key from a .NET generic Dictionary:</p>

<pre><code>Dictionary&lt;int, string&gt; greek = new Dictionary&lt;int, string&gt;();
greek.Add(1, "Alpha");
greek.Add(2, "Beta");
string secondGreek = greek[2];  // Beta
</code></pre>

<p>But trying to get the keys given a value is not as straightforward because there could be multiple keys:</p>

<pre><code>int[] betaKeys = greek.WhatDoIPutHere("Beta");  // expecting single 2
</code></pre>

revised: okay to have some kind of find you would need something other than dictionary, since if you think about it dictionary are one way keys.  that is, the values might not be unique
that said it looks like you're using c#3.0 so you might not have to resort to looping and could use something like:
```
```
var key = (from k in yourDictionary where string.Compare(k.Value, "yourValue", true)  == 0 select k.Key).FirstOrDefault();
```
```