我试图删除我的当前项目在每个循环,如果有一些标准匹配,但它的触发错误后,删除和循环再次。
我的示例代码:
For Each Item As BookingRoom In myBookedRooms
If Item.RoomInfo.UIN = myRoom.UIN Then
myBookedRooms.Remove(Item)
Continue For
End If
Next*Note RoomInfo和myRoom都是类的实例
我使用的是myBookedRooms.remove,但是它的错误很小,那么什么才是正确的方法呢?如果房间id与所选房间匹配,请移除已预订的房间
发布于 2011-06-02 13:15:14
问题是,在迭代集合时,您正在修改它。
可以使用for循环反向迭代列表:
For i = myBookedRooms.Count - 1 To 0 Step -1
If myBookedRooms(i).RoomInfo.UIN = myRoom.UIN Then
myBookedRooms.RemoveAt(i)
End If
Next或者,您可以使用RemoveAll method
myBookedRooms.RemoveAll(Function(item) item.RoomInfo.UIN = myRoom.UIN)另一种选择是使用Enumerable.Where method过滤结果,但与前两种方法不同的是,您需要反转逻辑检查以排除匹配的项,因为目的是删除它们:
myBookedRooms = myBookedRooms
.Where(Function(item) item.RoomInfo.UIN <> myRoom.UIN)
.ToList()https://stackoverflow.com/questions/6214358
复制相似问题