更改foreach内的集合

Nov*_*off 1 c# linq

这是我的代码:

foreach (OrderItem item in OrderInfo.order)
{
     orderItemViews.Single(i => i.numericUpDown.Name == item.id.ToString()).numericUpDown.Value = item.count;
}
Run Code Online (Sandbox Code Playgroud)

它给出了一个例外.
我知道我无法更改foreach中的集合
如何更改此代码以使其工作?最重要的是它是LINQ代码.

例外说"该集合已被修改".抱歉无法提供真实的异常消息,因为它非英语

对不起大家.我发现收藏正在发生变化.它在*numericUpDown_ValueChanged*处理器内.无论如何我得到了答案.谢谢

小智 7

你可以使用ToList(),像这样:

foreach (OrderItem item in OrderInfo.order.ToList())
{
     orderItemViews.Single(i => i.numericUpDown.Name == item.id.ToString()).numericUpDown.Value = item.count;
}
Run Code Online (Sandbox Code Playgroud)

或者使用normal for循环:

for (int i = 0 ; i < OrderInfo.order.Count; i++)
{
     OrderItem item = OrderInfo.order[i];
     orderItemViews.Single(i => i.numericUpDown.Name == item.id.ToString()).numericUpDown.Value = item.count;
}
Run Code Online (Sandbox Code Playgroud)

提示:性能明智,最好使用第二种方式.

  • 你确定这有帮助吗?你在哪里看到'odrer`集合的变化? (2认同)