Ari*_*ule 31 c# dictionary for-loop
我通常使用foreach循环遍历Dictionary.
Dictionary<string, string> dictSummary = new Dictionary<string, string>();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我想修剪空白的条目,而foreach循环确实不允许这样做.
foreach (var kvp in dictSummary)
{
kvp.Value = kvp.Value.Trim();
}
Run Code Online (Sandbox Code Playgroud)
如何使用for循环执行此操作?
for (int i = dictSummary.Count - 1; i >= 0; i--)
{
}
Run Code Online (Sandbox Code Playgroud)
Abd*_*had 45
那这个呢?
for (int i = dictSummary.Count - 1; i >= 0; i--) {
var item = dictSummary.ElementAt(i);
var itemKey = item.Key;
var itemValue = item.Value;
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*rth 20
KeyValuePair<TKey, TValue>
不允许你设置Value
,它是不可变的.
你必须这样做:
foreach(var kvp in dictSummary.ToArray())
dictSummary[kvp.Key] = kvp.Value.Trim();
Run Code Online (Sandbox Code Playgroud)
这里的重要部分是ToArray
.这会将Dictionary复制到一个数组中,因此更改foreach中的字典不会抛出InvalidOperationException
.
另一种方法是使用LINQ的ToDictionary
方法:
dictSummary = dictSummary.ToDictionary(x => x.Key, x => x.Value.Trim());
Run Code Online (Sandbox Code Playgroud)
您不需要使用.ToArray()
或.ElementAt()
。就像使用键访问字典一样简单:
dictSummary.Keys.ToList().ForEach(k => dictSummary[k] = dictSummary[k].Trim());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
65756 次 |
最近记录: |