vb.net - 从 VB.NET 中的列表中删除特定值

标签 vb.net lambda

我有一个值列表,这些值都是字母和数字的组合,构成一个 ID,但在某些情况下,这可能只是一个 0。

我需要删除所有为 0 的情况。

我试过类似的东西

For i = 0 the list.count - 1
   If list(i) = "0" Then
       list.RemoveAt(j)
   End If
Next

但是这会在最后抛出参数超出范围异常,因为循环继续,我不能使用 Exit For 因为我需要检查多个零。

我不太擅长似乎可以按我的意愿行事的 Lamda 表达式,但我不理解它们,所以如果有人能给出并解释一个可行的表达式,那就太好了。

最佳答案

从列表的末尾开始向后向0

For i = list.count - 1 to 0 Step -1
   If list(i) = "0" Then
       list.RemoveAt(j)
   End If
Next

如果您想将 linq 与 lambda 一起使用,请使用 Where 来保留所有不等于“0”的项目并使用 ToList

重新创建列表
list = list.Where(function(value) value <> "0").ToList

在这种情况下,lamda 与

Function IsNotZero(value As String) As Boolean
    return value <> "0"
End Function

关于vb.net - 从 VB.NET 中的列表中删除特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33153655/

相关文章:

lambda - 使用 collect 时的并发数据结构和并行流

vb.net - 已经运行的应用程序现在出现套接字错误 10013

vb.net - 关于泛型的初学者问题

vb.net - 将事件与共享潜艇一起使用?

c# - 颠覆 : How to unversion the BIN and OBJ folders

c++ - 可变参数模板函数是否以相反的顺序调用 lambda 参数?

c# - 使用 LINQ LAMBDA 让每个部门的员工

c# - 相等和赋值运算符

c# - C# 编译器或 JIT 能否优化掉 lambda 表达式中的方法调用?

java - 将 List<String> 中的分隔字符串转换为 List<String>