У меня есть это, и все, кажется, работает нормально, но не уверен, почему и если это действительно.
Dictionary<string, List<string>> test = new Dictionary<string, List<string>>();
while (test.Count > 0)
{
var obj = test.Last();
MyMethod(obj);
test.Remove(obj.Key);
}
Обновление: спасибо за ответы, я обновил свой код, чтобы объяснить, почему я не делаю Dictionary.Clear ();