使用for循环遍历字典

本文关键字:字典 遍历 循环 for 使用 | 更新日期: 2023-09-27 18:02:34

我通常使用foreach循环遍历Dictionary。

Dictionary<string, string> dictSummary = new Dictionary<string, string>();

在本例中,我想修剪空白的条目,但是foreach循环不允许这样做。

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

我如何用for循环做到这一点?

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

使用for循环遍历字典

这个怎么样?

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

KeyValuePair<TKey, TValue>不允许您设置Value,它是不可变的。

你必须这样做:

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

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

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

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

您不需要使用.ToArray().ElementAt()。它就像使用键:

访问字典一样简单。
dictSummary.Keys.ToList().ForEach(k => dictSummary[k] = dictSummary[k].Trim());