我通常使用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--)
{
}

最佳答案

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

您将必须这样做:

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

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

另一种方法是使用LINQ的ToDictionary方法:
dictSummary = dictSummary.ToDictionary(x => x.Key, x => x.Value.Trim());

09-08 11:22