Я решил добавить ответ, основываясь на своих мыслях о МакКее. Это будет выполняться очень быстро, учитывая стандартные методы LINQ, предоставляя только ключ:
var maxValue = dict.Max(p => p.Value);
var keys = dict.Where(p => p.Value == maxValue).Select(p => p.Key);
Теперь, если OP знает, что всегда есть только один ключ (без повторяющихся значений), тогда улучшение (очень маленькое) будет в том, чтобы использовать First
с этим, так как из-за ленивой оценки только элементы до одного с максимальное значение будет оценено после того, как все будут оценены, чтобы сначала найти максимальное значение:
var key = dict.Where(p => p.Value == maxValue).First().Key;