Skip to main content
 首页 » 编程设计

c#之在 foreach 中更改集合

2024年01月21日27wuhuacong

这是我的代码:

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

它给出了一个异常(exception)。
我知道我无法更改 foreach
中的集合 如何更改此代码以使其工作?最好是 LINQ 代码。

异常表示“集合已修改”。抱歉,无法提供真正的异常消息,因为它是非英语的

对不起各位。我发现集合在哪里发生变化。它位于 *numericUpDown_ValueChanged* 处理程序中。无论如何,我已经得到了答案。谢谢

请您参考如下方法:

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

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

或者使用普通的 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; 
} 

提示:性能方面,最好使用第二种方式。