【发布时间】:2019-08-03 19:30:47
【问题描述】:
我正在尝试修改 List 集合 List<DataClass> 的值中的一些值。我试图修改的值 listValues[i].destinationValue 和 listValues[i].sourceKey 这也是一个列表集合。当我尝试向集合添加另一个值时,它使用 foreach 循环工作。但是当它进入 foreach 循环值中的下一个值时,它会停止并且我得到错误:System.InvalidOperationException: 'Collection was modified;.
foreach (var listValue in listValues)
{
if (listValue.hostName == data[4] && listValue.description == data[3] && listValue.ruleName == data[2])
{
var i = listValues.FindIndex(x => x.hostName.Equals(listValue.hostName));
listValues[i].destinationValue.Add(data[0]);
listValues[i].sourceKey.Add(data[1]);
}
else
{
listValues.Add(docValueModelClass);
}
}
if (listValues.Count == 0)
{
listValues.Add(docValueModelClass);
}
您能否建议,我该如何克服这个问题?
【问题讨论】:
-
把
foreach变成for循环 -
for (int i = 0; i < listValues.Count; ++i) { var listValue = listValues[i]; /* loop body here */ } -
将
foreach (var listValue in listValues)更改为foreach (var listValue in listValues.ToArray())。然后你枚举不同的列表/数组。 -
@DmitryBychenko:使用你的建议效果很好。感谢您的帮助!