.NET / C#, Konvertieren Sie die Liste in eine SortedList
Was ist der beste Weg, um zu konvertieren eine Liste SortedList? Eine gute Möglichkeit dies zu tun, ohne das Radfahren? Alle klugen Weg, es zu tun mit einem OrderBy()?
WRAP UP
Bitte Lesen Sie alle Antworten und Kommentare.
SortedList ist eine assoziative Sammlung, nicht eine einfache Liste. Was wollen Sie als Schlüssel/Wert?
Was ist dein Kriterium für "beste"? Kürzeste code, den schnellsten code, die meisten leicht verständlichen code, die meisten leicht Debuggen von code, die meisten portablen code? Etwas anderes?
Ich denke, die meisten leicht zu verstehen ist. Aber schnell/sauber/einfach/prägnant wäre schön
Mehrdad, gute Frage. Ich denke, ich werde ziehen eine Eigenschaft von my-Objekt als Schlüssel verwendet. Bfreies Beispiel denke ich hat mich auf den richtigen Pfad.
Was ist dein Kriterium für "beste"? Kürzeste code, den schnellsten code, die meisten leicht verständlichen code, die meisten leicht Debuggen von code, die meisten portablen code? Etwas anderes?
Ich denke, die meisten leicht zu verstehen ist. Aber schnell/sauber/einfach/prägnant wäre schön
Mehrdad, gute Frage. Ich denke, ich werde ziehen eine Eigenschaft von my-Objekt als Schlüssel verwendet. Bfreies Beispiel denke ich hat mich auf den richtigen Pfad.
InformationsquelleAutor BuddyJoe | 2009-06-11
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nun habe ich keine Ahnung, wie effizient das ist, aber es ist eine Zeile code 🙂 Auch in diesem Beispiel habe ich nur verwendet, die Zeichenfolge selbst als Selektor. In einem realen Szenario sollten Sie im Voraus wissen, was Sie verwenden möchten, als ein Selektor.
InformationsquelleAutor BFree
Meinst du:
List<T>
und wünschen sortiert werden?List<T>
und möchten, erstellen Sie einen anderen "Liste", die sich selbst sortiertList<T>
und möchtenSortedList<T,T>
wo der Schlüssel ist der gleiche wie der WertVorausgesetzt, Eingang:
1 ist trivial
2 ist trivial
3 ist trivial, mit einer Kopie
und effizienter:
Kann ich nicht sehen warum würden Sie wollen, zu tun, 3, aber dort gehen Sie.
Ziemlich verspätet - Fall habe ich (richtig oder falsch, es ist ein "Spielplatz" - Anwendung) ich abgerufen haben eine "Liste" (wohl eher IEnumerable), die aus "anderswo", die ich verwalten möchte in meiner app als eine sortierte Liste - an dieser Stelle will man eine Kopie, aber nicht, wie Sie mit dem Eintrag als Schlüssel zu sich selbst.
cool, willst du die Liste gepflegt werden, in sortierter Reihenfolge (in diesem Fall benötigen Sie eine Dritte Klasse, da keine solche Klasse vorhanden, in der framework 3.5) oder sind Sie glücklich, zu kopieren, zu Sortieren, dann ändern Sie niemals wieder (in dem Fall sollte man es als IEnumerable oder IOrderedEnumerable)
InformationsquelleAutor ShuggyCoUk
Verstehen, dass ein
List<T>
ist ein smart-array, und eineSortedList<T, U>
ist ein Schlüssel/Wert-Binär-Baum. Da gibt es keine Beziehung zwischen Ihrer Strukturen, kann es nicht möglich sein ein effektiver Weg, es zu tun, anstatt einfach unter jedes element aus der Liste und legt es in den Baum.Wenn du meinst "sortierte Liste" statt"
SortedList
", dann ist es trivial zu Sortieren Sie Ihre Liste entweder überList.Sort()
oder eine entsprechendeOrderBy()
.InformationsquelleAutor mquander
LINQ bietet Ihnen eine ISortedEnumerable ich glaube, die kann gut genug sein für Ihre Zwecke.
InformationsquelleAutor Will Eddins