首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果某些条件匹配,则从列表中删除当前项

如果某些条件匹配,则从列表中删除当前项
EN

Stack Overflow用户
提问于 2011-06-02 12:14:18
回答 1查看 15.6K关注 0票数 5

我试图删除我的当前项目在每个循环,如果有一些标准匹配,但它的触发错误后,删除和循环再次。

我的示例代码:

代码语言:javascript
复制
        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与所选房间匹配,请移除已预订的房间

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-02 13:15:14

问题是,在迭代集合时,您正在修改它。

可以使用for循环反向迭代列表:

代码语言:javascript
复制
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

代码语言:javascript
复制
myBookedRooms.RemoveAll(Function(item) item.RoomInfo.UIN = myRoom.UIN)

另一种选择是使用Enumerable.Where method过滤结果,但与前两种方法不同的是,您需要反转逻辑检查以排除匹配的项,因为目的是删除它们:

代码语言:javascript
复制
myBookedRooms = myBookedRooms
                    .Where(Function(item) item.RoomInfo.UIN <> myRoom.UIN)
                    .ToList()
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6214358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档