在循环中替换列表中作为对象属性的字符串有问题



我有一个类Plott。其中一个属性是一个名为Headers的头名称列表。该列表存储了该图中所有列的名称。

我需要循环遍历这些对象(plt在一个列表中),并找到任何包含字符串"aaa"的头的出现,并将其替换为字符串"bbb"

我成功地遍历并在这些对象中找到了这些头。我还可以定义一个新的字符串替换"aaa""bbb"但是当我尝试受让人的新字符串即索引列表的对象,它给了一个错误关于设置已经改变和循环不能继续(错误消息不是英语所以我不会在这里问)

foreach (Plott obj in plt) {
int c = 0;
foreach (String s in obj.Headers)
{ 
if (s.Contains("aaa"))
{
string newstr;
newstr = s.Replace("aaa", "bbb");
obj.Headers[c] = newstr;
}
c++;
}
}

只需替换整个列表。

obj.Headers = obj.Headers.Select( x => x.Replace("aaa","bbb") ).ToList();

在foreach循环中检索的变量是集合中元素的只读副本,因此不能修改它。

如果你想这样做,那么你需要使用一个简单的for循环

for (int ind = 0; ind < plt.Count(); ind++)
{  
....
}