2011-03-24 110 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