2013-05-18 22 views
17

Ich habe eine Liste der Städte.Sortieren einer Liste von Objekten durch den Wert einer Eigenschaft

List<City> cities; 

Ich möchte die Liste nach Bevölkerung sortieren. Der Code, den ich mir vorstelle ist etwas wie:

cities.Sort(x => x.population); 

aber das funktioniert nicht. Wie soll ich diese Liste sortieren?

+2

http://stackoverflow.com/questions/2766686/how-do-i-use-a-lambda-expression-to-sort- integers-inside-a-object – devshorts

+1

mögliches Duplikat von [Liste von Objekten nach Eigenschaften C# sortieren] (http://stackoverflow.com/questions/9716273/sort-list-of-object-by-properties-c-sharp) – NINCOMPOOP

+0

Joe, du musst zwei Argumente haben. Einer ist der Gegenstand und der andere ist der Vergleich. Überprüfen Sie das Beispiel in dem Beitrag, den ich verknüpfte – devshorts

Antwort

35

Verwenden Sie OrderBy der Linq-Funktion. Siehe http://msdn.microsoft.com/en-us/library/bb534966.aspx

cities.OrderBy(x => x.population); 
+13

Es ist wichtig zu beachten, dass die Option Sortierung, OrderBy die Eingabe nicht ändert. –

+0

Oder wenn Sie die Liste einfach in umgekehrter Reihenfolge ausgeben möchten, können Sie 'cities.Reverse()' verwenden – Curiousity

13

Verwenden Sie dies, das wird funktionieren.

List<cities> newList = cities.OrderBy(o=>o.population).ToList(); 
2

Als weitere Option, wenn Sie nicht das Glück haben, der Lage sein, Linq zu verwenden, können Sie die IComparer oder IComparable-Schnittstelle verwenden.

ist hier ein guter KB-Artikel auf den beiden Schnittstellen: http://support.microsoft.com/kb/320727

Verwandte Themen