Wie suchen LinkedList<T> - Kollektion?
Ich habe eine LinkedList<T>
Objekt, wobei T einen beliebigen Objekt hat eine Eigenschaft namens ID. Ich will suchen, meine Sammlung mit ID als Suchkriterium.
Jetzt weiß ich, Suche es mit Hilfe einer while-Schleife:
LinkedListNode<MyObject> element = myObject.First;
while (element != myObject.Last)
{
if (element.Value.ID == myID)
break;
element = element.Next;
}
Aber ich Frage mich, ob gibt es eine elegantere Lösung. Beachten Sie, dass ich brauche LinkedListNode<T>
als ein Ergebnis, um durch die Liste navigieren von dort aus.
- Keine der Antworten, so weit, sind gut. Wenn Sie möchten, dies zu tun, effizient, verwenden Sie
yield
innerhalb der Schleife. Eine Erweiterung Methode aus, wenn Sie möchten, um es aufzurufen, ohne eine Menge code. Sie werden der Iteration über die Kollektion die eine oder andere Weise.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schreiben Sie eine Erweiterung-Methode erhalten Sie eine Sequenz von Knoten und Suche:
dann können Sie
IEnumerable<LinkedListNode<T>>
von derLinkedList
um zum aufrufen dieser Methode?Nodes
gibt dieIEnumerable<LinkedListNode<T>>
aus der verlinkten Liste.Last.Next
kann null sein, wenn die Liste nicht leer ist.LinkedList<T>
umgesetztIEnumerable<LinkedListNode<T>>
als gut. Ich weiß nicht, warum es nicht geht, vielleicht um Verwirrung zu beseitigen, da es vor allem angesehen, wie eine Sammlung vonT
, nicht eine Sammlung von Knoten.Gleiche Idee wie Lee, aber einfacher code:
BEARBEITEN
Keine Notwendigkeit für die Verwendung von LINQ oder Erweiterung Methoden. Verwenden Sie einfach .Die Find() - es gibt eine LinkedListNode
Hinweis: Für dies funktioniert, dein Modell mit der id müsste Objekt überschreiben.Gleich zu vergleichen-ID ' s (und somit Objekt.GetHashCode)
Wird diese geben das Ergebnis, das Sie erwarten?
Verwenden @MartinLiversage Antwort, und erweitern Sie Sie, um verwenden Sie die
Find
Methode, die Teil desLinkedList<T>