Liste mit Objekten durchsuchen lassen

FJK

Erfahrenes Mitglied
Hi,

c#

hoffe das ist der richtige Bereich...

ich hab ein kleines Syntaxproblem mit der Find Methode bezüglich der Listen.

Also ich habe eine Liste, in deriIch Objekte ablege.
Jedes Objekt hat eine Variable ID.
Jetzt will ich die Liste, also die Objekte nach einer bestimmten ID durchsuchen.
Wollte hierfür mal die gegebene Find Methode ausprobieren, nur ich weiß nicht was ich da als "Prädikat" übergeben muss?
der bsp Code in der msdn finde ich mehr verwirrend als hilfreich.

danke
 
Ist eigentlich ganz einfach, fande es Anfangs auch verwirrend:
Du musst die Adresse einer Funktion übergeben, die einen boolschen Rückgabewert hat. Die Funktion soll ermitteln, ob es sich bei einem bestimmten Objekt aus deiner Liste um einen "Treffer" handelt, also ob das Objekt die Suchkriterien erfüllt. Hier ein Beispiel:
Code:
    Sub Main()
        Dim Liste As New List(Of MeinObjekt)
        For i As Integer = 0 To 9
            Liste.Add(New MeinObjekt(i))
        Next
        ' Jetzt nach Objekt mit ID=4 suchen:
        Dim result As MeinObjekt = Liste.Find(AddressOf PrädikatFunktion)
    End Sub

    Private Function PrädikatFunktion(ByVal TestObjekt As MeinObjekt) As Boolean
        Return (TestObjekt.ID = 4)
    End Function

    Private Class MeinObjekt
        Public ID As Integer

        Public Sub New(ByVal ID As Integer)
            Me.ID = ID
        End Sub
    End Class
Ist damit alles klar?

EDIT: Sehe gerade, dass du dir C# wünscht, habe aber VB.Net-Code angegeben. Falls du den nicht lesen kannst, dann verwende einen Code-Translator.
EDIT2: Merke gerade, dass der Code-Translator nicht mit Umlauten zurecht kommt... musst halt das "ä" entfernen :p
 
Zuletzt bearbeitet:
Hi,

danke

vb ist mir nicht ganz unbekannt, daher geht es...
das es sowas wie ein code translater gibt, wußte ich garnicht, danke

ich verstehe aber noch nicht was du in der funktion machst, könntest du das nochmal genauer erklären?

Code:
    Private Function PrädikatFunktion(ByVal TestObjekt As MeinObjekt) As Boolean
        Return (TestObjekt.ID = 4)
    End Function

danke
 
ok, also die Überprüfung selbst, die die Find Methode benutzen soll, das macht sinn

aber in dem Bsp bekomme ich das Objekt ja zurück, was ich brauche ist der Index, an welcher stelle das gesuchte Objekt sich in der Liste befindet, damit ich das bearbeiten kann.
Geht dies überhaupt?

und ist eine selbstgeschriebene Suche in der Liste, standartmässig Langsamer als die fertigen Methoden?
 
ok, habs selbst gefunden gibt ja FindIndex()

nur habe ich noch ein Problem mit den übergabe Parameter der Prädikatfunktion, du übergibst ja einfach die Addresse und suchst nach einen festen Inhalt. Ich möchte aber den zu Suchenden Inhalt übergeben, dies nimmt er leider bei dem Aufruf nicht an.
Wie kann ich das machen?
 

Neue Beiträge

Zurück