2010-11-17 3 views
2

J'ai une classe qui ressemble à ceci:Tri d'une liste en C#

class Record 
{ 
    public string host { get; set; } 
    public string type { get; set; } 
    public string name { get; set; } 
    public string RunAsUser { get; set; } 
    public string Status { get; set; } 
    public string StartMode { get; set; } 
} 

Et une liste de cette classe:

List<Record> Records = new List<Record>(); 

Cette liste contient un certain nombre d'entrées. Comment puis-je trier cette liste sur la base de Record.host (alphabétiquement)?

Y a-t-il une fonction intégrée ou devrais-je écrire la mienne? Si oui, quelqu'un pourrait-il me pointer dans la bonne direction en me donnant peut-être un pseudo-code?

Répondre

7

Vous pouvez les trier en utilisant Linq si vous avez juste besoin de les parcourir par ordre trié.

Records.OrderBy(r => r.host) 

Sinon, vous pouvez appeler:

Records.sort((x, y) => string.Compare(x.host, y.host)); 

Pour trier de façon permanente la liste.

+0

merci. Votre deuxième solution fonctionne très bien. – xbonez

+0

Tant que vous voulez l'ordre croissant. Aussi: 'Liste acending = décroissant.OrderBy (x => x.host) .ThenBy (x => x.nom) .ToList();' – JohnB

2

Ce qui suit trier la liste elle-même:

Records.Sort((a, b) => String.Compare(a.host, b.host)); 
+3

Remarque; il serait plus sûr d'utiliser 'string.Compare (a.host, b.host)' - alors si 'a.host' est' null' vous n'avez pas à vous en soucier. –

+0

Bonne prise Marc. –