使用for循环遍历字典

我通常使用foreach循环来迭代Dictionary。

Dictionary dictSummary = new Dictionary(); 

在这种情况下,我想修剪空白的条目,而foreach循环确实不允许这样做。

 foreach (var kvp in dictSummary) { kvp.Value = kvp.Value.Trim(); } 

如何使用for循环执行此操作?

 for (int i = dictSummary.Count - 1; i >= 0; i--) { } 

KeyValuePair不允许您设置Value ,它是不可变的。

你必须这样做:

 foreach(var kvp in dictSummary.ToArray()) dictSummary[kvp.Key] = kvp.Value.Trim(); 

这里的重要部分是ToArray 。 这会将Dictionary复制到一个数组中,因此更改foreach中的字典不会抛出InvalidOperationException

另一种方法是使用LINQ的ToDictionary方法:

 dictSummary = dictSummary.ToDictionary(x => x.Key, x => x.Value.Trim()); 

那这个呢?

 for (int i = dictSummary.Count - 1; i >= 0; i--) { var item = dictSummary.ElementAt(i); var itemKey = item.Key; var itemValue = item.Value; } 

您不需要使用.ToArray().ToArray() .ElementAt() 。 它就像使用密钥访问字典一样简单:

 dictSummary.Keys.ToList().ForEach(k => dictSummary[k] = dictSummary[k].Trim());