List(of Point) sortieren

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von singu.

    List(of Point) sortieren

    Hi,

    ich habe eine List (of Point) welche mit diversen Koordinaten befüllt ist.
    Die .Net Methode ListOfPoint.Sort() hat eine Ausnahmne beim Aufruf zur folge.
    Hier der Ausnahmetext:

    VB.NET-Quellcode

    1. ...
    2. Fehler beim Vergleichen von zwei Elementen im Array.
    3. ...


    Ich möchte die Liste nach dem kleinsten Y Wert aufsteigend sortieren, also als erstes Element sollte das Element mit dem kleinsten Y Wert sein.
    Gibt es eine andere Möglichkeit außer in einer Schleife alle Y Werte mit dem nächsten zu vergleichen, und die Elemente entsprechend zu sortieren?


    mfg
    Die Sort-Methode ist etwas umfangreicher. Du kannst im einem IComparer festlegen, wie sortiert werden soll.

    VB.NET-Quellcode

    1. ListOfPoint.Sort(New Selbstgeschriebener_pointcomparer)


    VB.NET-Quellcode

    1. Public Class Selbstgeschriebener_pointcomparer
    2. Implements IComparer(Of Point)
    3. Public Function Compare(x As System.Drawing.Point, y As System.Drawing.Point) As Integer _
    4. Implements System.Collections.Generic.IComparer(Of System.Drawing.Point).Compare
    5. Select Case x.Y
    6. Case Is > y.Y : Return 1
    7. Case Is = y.Y : Return 0
    8. Case Is < y.Y : Return -1
    9. End Select
    10. End Function
    11. End Class





    Andere Möglichkeit wäre es, mit LINQ die Daten in einer Abfrage in der richtigen Reihenfolge rauszufischen:

    VB.NET-Quellcode

    1. Dim sortierteliste = From a In ListOfPoint Order By a.Y Select a


    "sortierteliste" enthält nun die Elemente sortiert nach .Y

    LG, der_Kurt