You cannot easily do this efficiently in regular LINQ - you can get the minimum value easily, but another scan is required to find the key. If you can afford it, use Jess's answer.
However, you can watch MinBy on MoreLINQ , which will let you write:
var pair = dictionary.MinBy(x => x.Value);
After a single scan, you will have a pair with a key and value.
EDIT: As the Diaper says, MinBy also in System.Interactive in Reactive Extensions .
source share