2011-03-24 4 views
1

Googling google pendant une heure et n'arrive pas à trouver la réponse. Ce qui suit va supprimer « stupide » et imprime « Bonjour tout le monde »VB.Net filtre tableau équivalent de VB6

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

Quel est l'équivalent VB.Net pour filtre? Toute aide serait grandement appréciée! Edit: (Je suis à la recherche d'une solution Framework 2.0 NET)

Répondre

0

Pour .NET 2.0 vous pouvez utiliser la méthode Array.FindAll, comme ceci:

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

Usi ng ce prédicat:

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

Pouvez-vous utiliser les fonctions lambda de VB.Net dans .Net 2? – MarkJ

+0

@MarkJ Non, bien sûr que non! Merci Mark. –

+0

+1 après la modification. Votre fonction est en C# bien que :) – MarkJ

2

Quelque chose comme ça peut-être (Suppose VB 10):

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

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

Une alternative est d'utiliser Sauf (qui est disponible en .Net 3.5) :

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

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

Hey Chris, merci. Vos mots. Sauf solution fonctionne pour le cadre 3.5. Quelqu'un sait-il comment le faire en 2.0? – DontFretBrett