2013-05-18 12 views
17

Ho una lista di città.Ordina una lista di oggetti per il valore di una proprietà

List<City> cities; 

Mi piacerebbe ordinare la lista per popolazione. Il codice che sto immaginando è qualcosa di simile:

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

, ma questo non funziona. Come dovrei ordinare questo elenco?

+2

http://stackoverflow.com/questions/2766686/how-do-i-use-a-lambda-expression-to-sort- interi-dentro-un-oggetto – devshorts

+1

possibile duplicato di [Ordina elenco di oggetti per proprietà C#] (http://stackoverflow.com/questions/9716273/sort-list-of-object-by-properties-c-sharp) – NINCOMPOOP

+0

Joe, devi avere due argomenti. Uno è l'oggetto e l'altro è il comparatore. Controlla l'esempio nel post che ho collegato – devshorts

risposta

35

Utilizzare la funzione OrdineBy di Linq. Vedi http://msdn.microsoft.com/en-us/library/bb534966.aspx

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

È importante notare che Ordinamento non allineato, OrderBy non modifica l'input. –

+0

Oppure, se vuoi semplicemente stampare l'elenco in ordine inverso, puoi usare 'cities.Reverse()' – Curiousity

13

Utilizzare questo, questo funzionerà.

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

Come ulteriore opzione, se non si è abbastanza fortunati da essere in grado di usare LINQ, è possibile utilizzare l'IComparer o l'interfaccia IComparable.

Ecco un buon articolo KB sulle due interfacce: http://support.microsoft.com/kb/320727

Problemi correlati