枚举更新的列表

时间:2018-10-08 09:12:39

标签: vb.net linq enumerate

如何枚举更新列表。 例如,我有以下代码:

For I as integer = 0 to MyList.Count-1
.......
.......
Next

当我运行此循环时,(MyList)是从另一个来源更新的,那么我会收到一条错误消息:“集合已被修改。”

我不想停止(MyList)的更新,并且我还需要一个列表实例与更新后的实例分开。 例如:如果(MyList)包含10个项目,然后再开始For ... Next循环并将从外部源更新的(MyList)循环变为12个项目,则我需要运行For .... Next仅用于10个项目,我不希望额外的2个项目。同时我也不想丢失这两个新项目。

我决定通过以下代码从(MyList)中复制一份:

 m.ToList.AsEnumerable

因为(MyList)是'iEnumerable(Of DataRow)',但是我也遇到了相同的错误“收藏集已修改”

任何想法?

1 个答案:

答案 0 :(得分:1)

如果您需要枚举列表,而其他线程可能正在更改它,则一种选择是仅将其复制(在C#中,因为我不太熟练VB):

var list = new List<int>(MyList);
for(int i = 0; i < list.Count; i++)
{
    // process your original items 
    // regardless of whether someone adds or removes from 'MyList'
}