从vb.net中的List(Of t)中删除项目失败

Cod*_*y C 5 .net vb.net list generic-list

我有一个通用列表,我正在删除使用的项目List.Remove(Object).我一直在删除项目,但每当我到达第五项我删除它失败,并没有从列表中删除它.我删除的内容似乎并不重要,但每次我尝试删除第五项时失败的五个项目.

可能是什么导致了这个?查看文档List(Of T).Remove,它没有指定他们用于删除项目的算法.

Rya*_*ndy 12

Remove将基于调用.Equals您的对象来匹配.默认情况下,对于给定对象,它只匹配同一个对象.如果你想要两个具有相同属性的对象被认为是相等的,即使它们不是同一个对象,你需要覆盖该Equals方法并将逻辑放在那里.

但是,另一个好的选择是使用RemoveAll并传入一个匿名委托或一个lambda表达式,其中包含您正在寻找的条件.例如:

customers.RemoveAll(customer => customer.LastName.Equals(myCustomer.LastName));
Run Code Online (Sandbox Code Playgroud)

当然,只有当你真的想要删除所有匹配的项目时才有效,和/或如果你确定只有一个匹配项目.