C# ordinare lista di oggetti

lunedì 12 aprile 2010 - 23.47

program Profilo | Junior Member

Ho una lista di oggetti ognuno dei quali contiene i seguenti attributi:
- string nome
- DateTime ora

Questa è la mia lista.
List<ClassediOggetto> lista= new List<ClassediOggetto>();

Ora vorrei ordinare la lista di oggetti in base al campo ora.
Come devo fare? Esiste un metodo della lista per farlo in automatico?

Grazie.

Giuseppe_gzp Profilo | Newbie

ciao,

Supponiamo che la tua classe oggetto abbia nome e cognome

public class Ordinatore{ public Ordinatore() { } public int Compare(Oggetto objA, Oggetto objB) { return objA.Nome.CompareTo(objB.Nome) * -1; } }
-1 se objA precede objB (A < B)
0 se objA e objB hanno la stessa posizione nell'ordinamento (A = B)
+1 se objA segue objB (A > B)


ora utilizzando il metodo sort fornito dalla classe list

listaDiOggetti.Sort(new Ordinatore());

p.s. moltiplica per -1 per l'ordine inverso, altrimenti togli la moltiplicazione

ciao!:)

freeteo Profilo | Guru

Ciao,
aggiungo solo che se hai Linq (quindi Fmw 3.5) ti basta una sintassi di questo tipo:

using System.Linq; ... listaDiOggetti.OrderBy(x => x.Data);

oppure "OrderByDescending" e quello che ti torna è un IEnumerable di oggetti, non ordina direttamente la lista, devi fare un'altra lista (oppure bindare come DataSource del controllo, direttamente quell'IEnumerable<T> che ti torna)

Per maggiori info: http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

dompa72 Profilo | Senior Member

Scusate per riprendo questo vecchissimo post

il metodo di linq è molto veloce e con una riga di codice è possibile ordinera una lista di classe.

la domanda:
se ho una classe fomata da Nome e Cognome
come posso ordinare una lista per cognome e nome?

Grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5