title: Dictionary look up where we want the keys contained in a string
body: <p>I have a <code>dictionary</code> containing keys, e.g.</p>
  
  <pre><code>"Car"
  "Card Payment"
  </code></pre>
  
  <p>I have a string <code>description</code>, e.g. "Card payment to tesco" and I want to find the item in the dictionary that corresponds to the string.</p>
  
  <p>I have tried this:</p>
  
  <pre><code>var category = dictionary.SingleOrDefault(p =&gt; description.ToLowerInvariant().Contains(p.Key)).Value;
  </code></pre>
  
  <p>This currently results in both "Car" and "Card Payment" being returned from the dictionary and my code blows up as I have <code>SingleOrDefault</code>.</p>
  
  <p>How can I achieve what I want? I thought about prefixing and suffixing the keys in spaces, but I'd have to do the same to the descriptions - I think this would work but it is a bit dirty. Are there any better ways? I have no objections of changing the Dictionary to some other type as long as performance is not impacted too much.</p>
  
  <p>Required Result for above example: only get "Card Payment"</p>