2014-11-04 16 views

Antwort

11

Sie List.Contains verwenden können:

If Not lsAuthors.Contains(newAuthor) Then 
    lsAuthors.Add(newAuthor) 
End If 

oder mit LINQs Enumerable.Any:

Dim authors = From author In lsAuthors Where author = newAuthor 
If Not authors.Any() Then 
    lsAuthors.Add(newAuthor) 
End If 

Sie auch eine effiziente HashSet(Of String) verwenden könnte anstelle der Liste, die keine Duplikate zulässt undzurückgibtin HashSet.Add, wenn die Zeichenfolge bereits im Satz war.

Dim isNew As Boolean = lsAuthors.Add(newAuthor) ' presuming lsAuthors is a HashSet(Of String) 
5

Die generische Liste hat eine Methode namens Contains, die true zurückgibt, wenn der Standardvergleich für den ausgewählten Typ ein Element findet, das den Suchkriterien entspricht.

Für eine List (Of String) ist dies der normale String-Vergleich, so könnte Ihr Code

Dim newAuthor = "Edgar Allan Poe" 
if Not lsAuthors.Contains(newAuthor) Then 
    lsAuthors.Add(newAuthor) 
End If 

Als Randnotiz sein, hält der Standardvergleich für Strings zwei Strings anders, wenn sie nicht der gleiche Fall. Also, wenn Sie versuchen, einen Autor namens "Edgar Allan Poe" hinzufügen und Sie bereits eine mit dem Namen "Edgar Allan Poe" hinzugefügt haben, das Barebone Contains nicht bemerkt, dass sie gleich sind.
Wenn Sie diese Situation zu bewältigen haben, dann müssen Sie

.... 
if Not lsAuthors.Contains(newAuthor, StringComparer.CurrentCultureIgnoreCase) Then 
    ..... 
+0

habe ich versucht, dass vor, erhalte ich eine Objektreferenz auf eine Instanz eines Objekts eingestellt. – Medise

+0

@Medise: dann initialisiere die Liste. 'Öffentliche lsAuthors als neue Liste (von String)' –

+0

Was für ein blutiger Fehler ich getan habe, das hat funktioniert, danke. – Medise

2

Um zu überprüfen, ob ein Element in einer Liste vorhanden ist, dass Sie die list.Contains() Methode verwenden können. Wenn Sie auf eine Schaltfläche klicken verwenden finden Sie in der Liste von Strings füllen Sie dann den Code:

Public lsAuthors As List(Of String) = New List(Of String) ' Declaration of an empty list of strings 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' A button click populates the list 
    If Not lsAuthors.Contains(TextBox2.Text) Then ' Check whether the list contains the item that to be inserted 
     lsAuthors.Add(TextBox2.Text) ' If not then add the item to the list 
    Else 
     MsgBox("The item Already exist in the list") ' Else alert the user that item already exist 
    End If 
End Sub 

Hinweis: Zeile für Zeile Erklärung gegeben wird als

0

Kommentare, die Sie eine Liste passender Produkte bekommen kann Ihr Zustand wie folgt aus:

Dim lsAuthors As List(Of String) 

Dim ResultData As String = lsAuthors.FirstOrDefault(Function(name) name.ToUpper().Contains(SearchFor.ToUpper())) 
If ResultData <> String.Empty Then 
    ' Item found 
Else 
    ' Item Not found 
End If 
Verwandte Themen