Это зависит.Если у вас есть постоянно меняющийся словарь и вам нужно получить эту информацию только один раз, используйте это:
MyDict.GroupBy(x => x.Value).Where(x => x.Count() > 1)
Однако, если у вас есть словарь, который более или менее статичен, и вам нужно получить эту информацию более одного разаВы должны не только сохранить свои данные в словаре, но также в ILookup
со значением словаря в качестве ключа и ключом словаря в качестве значения:
var lookup = MyDict.ToLookup(x => x.Value, x => x.Key).Where(x => x.Count() > 1);
Для печати информации, вы можете использовать следующий код:
foreach(var item in lookup)
{
var keys = item.Aggregate("", (s, v) => s+", "+v);
var message = "The following keys have the value " + item.Key + ":" + keys;
Console.WriteLine(message);
}