C # Listenreihenfolge mit 3 Eigenschaften .Net 2.0

7

Angenommen, ich habe eine Person-Klasse mit den Eigenschaften Name, Age, Level.

Ich weiß, wie man mit

nach einer der Eigenschaften sortiert %Vor%

Aber wie kann ich nach Name, Alter und Level sortieren?

Ein Äquivalent des SQL-Satzes: ORDER BY Name, Alter, Stufe

Danke

    
Joel Coehoorn 09.06.2009, 13:11
quelle

8 Antworten

28

Anpassung Ihres aktuellen Codes:

%Vor%

oder eine einfache linq-ish-Lösung:

%Vor%     
Joel Coehoorn 09.06.2009, 13:15
quelle
4

Haben Sie erwogen, zu .NET 3.5 zu wechseln und LINQ zu verwenden? Solche Dinge sind in LINQ wirklich einfach:

%Vor%     
Thorarin 09.06.2009 13:15
quelle
2

Ich würde IComparable auf Ihre Person-Klasse anwenden. In Ihrer benutzerdefinierten Vergleichsmethode können Sie die Logik für den Vergleich aller drei Eigenschaften festlegen und sicherstellen, dass die drei das richtige "Gewicht" haben (z. B. wenn zwei Instanzen von Person denselben Namen haben, sollten Sie als nächstes nach Alter oder Stufe sortieren) ).

    
AllenG 09.06.2009 13:15
quelle
1

Angenommen, Sie verwenden .NET 3.5

%Vor%     
Kirschstein 09.06.2009 13:15
quelle
0

Wenn C # 3.0 verfügbar ist (LINQ-Unterstützung), können Sie Folgendes tun:

%Vor%     
Noldorin 09.06.2009 13:16
quelle
0

Haben Sie LINQ to Objects in Betracht gezogen?

%Vor%     
Scott Anderson 09.06.2009 13:16
quelle
0

Sie müssen CompareTo für die erste Eigenschaft aufrufen, nach der Sie sortieren möchten, den Wert erhalten, der zurückgegeben wird, und wenn es 0 ist, dann CompareTo für die nächste Eigenschaft aufrufen und bei jeder Rückgabe von 0 wiederholen die nächste Eigenschaft, bis Sie einen Wert ungleich Null erhalten (den Sie dann zurückgeben) oder Sie erreichen das Ende der Eigenschaften, nach denen Sie sortieren möchten.

    
Simon P Stevens 09.06.2009 13:16
quelle
0
%Vor%     
frameworkninja 09.06.2009 13:19
quelle

Tags und Links