vb.net - 如何在 vb.net 中使用 lambda 删除列表的指定项目

标签 vb.net lambda

<分区>

有这样的情况。 有两个列表:list1 as List(of Integer)list2 as List(of Integer)

我需要删除列表 1 中与列表 2 中的项目相同的所有项目。

例如:

list1 = 0, 1, 2, 3, 6, 10
list2 = 3, 6

从 list1 中删除 list2 后:list1 = 0, 1, 2, 10

最佳答案

list1.RemoveAll(Function(i) list2.Contains(i))

或仅与委托(delegate)

list1.RemoveAll(AddressOf list2.Contains)

如 Meta-Knight 所述,如果 list2 只是一个查找列表,无论如何都不能包含重复项,您最好使用 HashSet(Of Int32) 代替。它的查找复杂度为 O(1),这与它的大小无关,缺点是如果您还需要 list2,则需要更多内存。

您可以轻松地创建一个:

Dim setOfNums = new HashSet(Of Int32)(list2)
list1.RemoveAll(AddressOf setOfNums.Contains)

关于vb.net - 如何在 vb.net 中使用 lambda 删除列表的指定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18960001/

相关文章:

java - 将 MethodHandle 转换为方法引用(此处为 Function)

ruby - 本地跳转错误 : unexpected return

c++ - 带有空捕获的 Lambda 表达式

c# - 在 C# 中使用 linq 或 lambda 表达式返回一个集合加上一个值

c# - Visual Studio 改变了 Ctrl-K-D 的工作方式

.net - 类和文件 VB .Net

vb.net - 在选项卡上设置焦点

c++ - 两个 vector 之间的最短旋转方向

vb.net - 设置 FileStream.Seek 的位置/索引以检索数据 VB.NET 的 "blocks"

c++ - 将数组传递给增强 vector 元组