我有一个包含“人”和“计数”值的字典:
Dictionary<string, int> PersonDictionary = new Dictionary<string, int>();
它具有以下数值:
Sally, 6
Beth, 5
Mary, 5
我想要交替每个人,并在每次循环时将值减1。我在这个问题上遇到了真正的心理障碍。
最好的方法是获取Sally并将其减1,然后转到Beth并将其减1,然后转到Mary并将其减1,然后回到Sally...以此类推。
只需进一步澄清,我想循环遍历它,并使用owner.Key值将其传递给另一个方法。因此,我需要能够逐个遍历此字典。
更新:
我的问题有几个问题。一个问题是在循环中递减字典。但我的主要问题是如何迭代每个项目(Sally-> Beth-> Mary-> Sally),直到每个人的价值降为0-这部分仍然是大问题。
PersonDictionary[owner.Key] = owner.Value - 1;
就可以了。 - aquinasforeach (var owner in personDictionary) personDictionary[owner.Key] = owner.Value - 1;
将会导致InvalidOperationException
异常,因为在字典中设置一个值会更新其内部版本号,从而使迭代器无效。 - Ousmane D.ToList
即可解决问题。看起来可能还有其他问题,但也许并没有。OP 似乎已经消失了,所以我们可能永远不会知道 :) - aquinas