2011-03-24 130 views
1

一直使用谷歌搜索,似乎无法找到答案。下面将删除“愚蠢”,并打印出“Hello World”的VB.Net滤波器阵列等效于VB6

Dim arr As Variant: arr = Array("hello", "stupid", "world") 
Dim newArr As Variant: newArr = Filter(arr, "stupid", False) 
Debug.Print Join(newArr, " ") 

什么是VB.Net等效过滤器?任何帮助将不胜感激!编辑:(我正在寻找一个2.0 NET框架解决方案)

回答

0

对于.NET 2.0,你可以使用Array.FindAll方法,像这样:

Dim arr As String() = New String() {"hello", "stupid", "world"} 
Dim newArr As String() = Array.FindAll(arr, AddressOf RemoveElements) 

USI ng这个谓词:

Private Shared Function RemoveElements(ByVal s As String) As Boolean 
    Return Not s.Equals("stupid") 
End Function 
+0

你可以在.Net 2中使用VB.Net中的lambda函数吗? – MarkJ 2011-03-25 14:46:52

+0

@MarkJ当然没有!谢谢马克。 – 2011-03-25 15:11:40

+0

编辑后+1。你的功能是用C#:) :) – MarkJ 2011-03-25 21:19:12

2

像这样的东西也许(假设VB 10):

Dim arr As String() = {"hello", "stupid", "world"} 

Dim filteredArray = (from s in arr 
        Where s <> "stupid" 
        Select s).ToArray() 

另一种方法是,区别在于使用(这是可用在.net 3.5) :

Dim words As String() = {"hello", "stupid", "world"} 
Dim excludedWords As String() = {"stupid"} 

Dim filteredArray = words.Except(excludedWords).ToArray() 
+0

嘿克里斯,谢谢。你的话。除了解决方案适用于框架3.5。任何人都知道如何在2.0中做到这一点? – DontFretBrett 2011-03-24 22:37:38