none
Sortieren / Ordnen nach einer bestimmten Vorgabe RRS feed

  • Frage

  • Hallo,

    ich habe Daten die ich in einer von mir vorgegebenen Reihenfolge sortieren / ordnen möchte. Also nicht Aufsteigend oder Absteigend. Ich möchte das nach Möglichkeit mit linq machen. Geht das und wenn ja hat jemand ein Beispiel?

    z.B.

    4

    7

    2

    1

    5

    9

    Usw.

    Mittwoch, 21. November 2012 08:55

Antworten

Alle Antworten

  • Hi Guenterm1968,

    Schau dir mal den Link an.

    MFG

    Björn

    Mittwoch, 21. November 2012 09:02
  • Hallo,

    Der link hilft mir nicht weiter, Dort wir gezeigt wie man Auf- oder Absteigend sortieren kann.

    Ich möcht aber die Reihenfolge selber vorgeben.

    Gruß

    Mittwoch, 21. November 2012 09:09
  • Schreib einen eigenen Comparer. Da kannst Du selbst per Code festlegen, welches Element größer, gleich oder kleiner als das Vergleichselement ist.
     
    --
    Viele Gruesse
    Peter
    Mittwoch, 21. November 2012 09:29
  • Hi dann schau dir mal den Link an.

    Grundlegend wirst du aber wohl Regeln aufstellen müssen nach denen du Sortierst.

    Theoretisch kannst du natürlich auch gegen eine Liste abgleichen, wo dann das Element mit dem kleineren Index kleiner ist.

    Aus dem Bauch heraus würde ich jetzt vermute, dass es mit dem Erzeugen einer neuen Liste in der Richtigen Reihenfolge schneller geht und weniger Aufwand ist.

    MFG

    Björn

    Mittwoch, 21. November 2012 09:33
  • Hallo, ergänzend zu Peters Antwort noch ein Artikel der MSDN, wo ein Beispiel für so eine "Sortier"-Methode zu sehen ist.

    http://msdn.microsoft.com/de-de/library/tfakywbh.aspx

    Am Ende muss nurnoch die Methode Sort der Liste mit der Methode als Parameter aufgerufen werden.


    Koopakiller [kuːpakɪllɐ] - http://koopakiller.ko.ohost.de/

    Mittwoch, 21. November 2012 10:58
    Moderator
  • Hallo Guenterm1968,
    wenn es Dir möglich ist den Daten eine Sortierspalte hinzuzufügen kann man sich das so überlegen:

    Public Class data
    Public Property Wert As Integer
    Public Property Order As Integer
    Public Sub New(wert As Integer, order As Integer) Me.Wert = wert Me.Order = order
    End Sub
    End Class

    Private li As New List(Of data)

    Me.li.Add(New data(4, 1))
    Me.li.Add(New data(7, 2))
    Me.li.Add(New data(2, 3))
    Me.li.Add(New data(1, 4))
    Me.li.Add(New data(5, 5))
    Me.li.Add(New data(9, 6))

    Dim lix = (From l In Me.li Order By l.Order Ascending Select l).ToList()

     Grüße Alexander

    Dienstag, 27. November 2012 06:39
  • Hi zusammen.

    Ich glaube Peters Antwort trifft den Kern. Es sollte ein Kriterium geben, nach dem ein (beliebiges) Element "größer","kleiner", oder "gleich" ist zu einem anderen (beliebigen), so dass du eine Ordnung erstellen kannst. Geht das, so ist ein Comparer zu schreiben, und mithilfe dieses dann zu sortieren.

    Einfach nur vorgegebene Elemente in eine fest vorgegebene Reihenfolge zu bringen, ergibt für mich keinen rechten Sinn. Denn was passiert, wenn ein neues Element hinzukommt? Wo kommt es hin? Es muss ja irgendwelche Operationen geben, die "Unordnung" schaffen.

    Andernfalls würde man einer sowieso unveränderlichen Anzahl Objekte einfach einmal eine Art ID oder Nummer geben, und dann nach dieser Nummer sortieren. Fertig.

    So oder so, läuft es in meinen Augen auf das Sortieren nach einer "Tabellenspalte" mit einem herkömmlichen oder eigenen Comparer hinaus.

    LG, Dennis.

    Dienstag, 27. November 2012 10:12
  • Hallo Guenterm1968,

    Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert


    Robert Breitenhofer, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Montag, 3. Dezember 2012 12:52
    Moderator