Bonjour,
J'ai une liste generic d'objet que j'aimerais trier du type List<User>.Sort().
Comment dois je faire ?
Merci
Bonjour,
J'ai une liste generic d'objet que j'aimerais trier du type List<User>.Sort().
Comment dois je faire ?
Merci
Bonjour topolino,
Je ne comprends pas vraiment ta demande.
Est-ce que ta liste est bien de type List<User> ? Si oui, sur quel critère veut tu la trier ? De manière ascendante ou descendante ?
Quelle version du framework utilises-tu ?
Je desire le trier sur le nom par exemple.
Je ne peux pas utiliser Ling et les lambda expression.
Je suis en c#2.0
Ok, avec un délégué anonyme et la méthode Sort ça devrait passer :
Je part du principe que la propriété Nom de User est de type string.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 liste.Sort(new Comparison<User>(delegate(User user1,User user2) { return user1.Nom.CompareTo(user2.Nom); }));
Il faut implémenter un IComparer<User> :
Et pour l'utiliser, tu le passes en paramètre de la méthode Sort :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class UserComparer : IComparer<User> { public int Compare(User x, User y) { return string.Compare(x.Nom, y.Nom); } }
EDIT: Sinon la méthode de Paul avec un Comparison<User> est un pas mal aussi... C'est plus concis, mais la syntaxe est (un peu) plus compliquée je trouve
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 List<User> users = new List<User>(); ... users.Sort(new UserComparer());
Merci à vous deux.
Je voulais un truc simple, car je n'avais pas envie de faire une class implementant icomparer et icomparable a chaque list d'objet que je dois creer, juste pour implementer une tri simple.
Merci à vous 2
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager