Вы не можете легко сделать это эффективно в обычном LINQ - вы можете легко получить минимальное значение, но поиск ключа требует еще одного сканирования.Если вы можете себе это позволить, воспользуйтесь ответом Джесс.
Однако вам может понадобиться взглянуть на MinBy
в MoreLINQ , что позволит вам написать:
var pair = dictionary.MinBy(x => x.Value);
После этого вы получите пару с ключом и значением только после одного сканирования.
РЕДАКТИРОВАТЬ: Как говорит Nappy, MinBy
также находится в System.Interactive в ReactiveРасширения .