Benutzer mit den meisten Antworten
Sortieren / Ordnen nach einer bestimmten Vorgabe

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.
Antworten
-
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- Als Antwort markiert Robert BreitenhoferModerator Montag, 3. Dezember 2012 12:51
-
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/
- Als Antwort markiert Robert BreitenhoferModerator Montag, 3. Dezember 2012 12:51
Alle Antworten
-
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- Als Antwort markiert Robert BreitenhoferModerator Montag, 3. Dezember 2012 12:51
-
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
-
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/
- Als Antwort markiert Robert BreitenhoferModerator Montag, 3. Dezember 2012 12:51
-
Hallo Guenterm1968,
wenn es Dir möglich ist den Daten eine Sortierspalte hinzuzufügen kann man sich das so überlegen:Public Class data
Private li As New List(Of 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
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
-
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.
-
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,
RobertRobert 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.