Rapakooti
Messages postés92Date d'inscriptionmercredi 4 décembre 2002StatutMembreDernière intervention18 mai 2018
-
Modifié le 21 mai 2021 à 17:49
Whismeril
Messages postés18599Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention20 septembre 2023
-
21 mai 2021 à 12:03
Bonjour, j'ai une liste que est charger de manière "aléatoire", je voudrait trier cette liste alphabétiquement,je n'y arrive pas avec sort... y a t il une méthode?
List<string> listeatelecharger = new List<string>();
listeatelecharger.Add(saved.Value);
listeatelecharger.Sort;
ou
listeatelecharger.Sort=true;
R A P A K O O T I
A voir également:
C# trier une liste
Trier une liste par ordre croissant c# - Meilleures réponses
Whismeril
Messages postés18599Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention20 septembre 2023629 Modifié le 21 mai 2021 à 17:49
Bonjour, string est déjà Icomparer, donc sort marche tout seul:
List<string> toto = new List<string>();
toto.Add("bb");
toto.Add("ab");
toto.Add("ba");
toto.Add("aa");
toto.Sort();
Whismeril
Messages postés18599Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention20 septembre 2023629
>
EmeryKwiZ
21 mai 2021 à 12:03
De rien, mais tu aurais pu chercher un peu avant de poster un autre sujet.
Rapakooti
Messages postés92Date d'inscriptionmercredi 4 décembre 2002StatutMembreDernière intervention18 mai 2018 Modifié le 21 mai 2021 à 17:50
Alors deja merci c'etais si evident lol
par contre cela ne mache pas quand je lis ma liste elle reste tel quel.
Voici mon code
var savedDoc = XDocument.Load(xmlListFilePath);
foreach (var saved in savedDoc.Root.Elements("FilePath"))
listeatelecharger.Add(saved.Value);
max = dataGridView1.Rows.Count;
listeatelecharger.Sort();
foreach (string film in listeatelecharger)
{
MessageBox.Show(film);
if (!File.Exists(Path.GetDirectoryName(film) + "\" + Path.GetFileNameWithoutExtension(film) + ".nfo"))
{
//Generation du thread pour generer le fichier html pour un FIlm sans nfo
Thread t = new Thread(new ParameterizedThreadStart(creationsansnfo));
t.Start(film + "*" + emplacementbibli);
}
else
{
Thread t = new Thread(new ParameterizedThreadStart(creationnfo));
t.Start(film + "*" + emplacementbibli);
}
}
Voici mon
R A P A K O O T I
Vous n’avez pas trouvé la réponse que vous recherchez ?
Whismeril
Messages postés18599Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention20 septembre 2023629 12 oct. 2012 à 16:16
ça vient peut être du foreach, il m'est arrivé qu'il me lise une list à l'envers....
Peut être dans ta requette linq, pour extraire le xml, il y a moyen de mettre un order by quelque part.
Whismeril
Messages postés18599Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention20 septembre 2023629 Modifié le 21 mai 2021 à 17:51
Je viens de retester, le foreach marche bien avec une List<string>, c'était avec un objet perso que ça avait bogué.
Par contre, il s'agit d'une de chemins et dans l'ordre alphabétique
"c:\temp\Zigomar.avi" est avant "d:\temp\Amityville.avi"
Si tu veux trier sur le nom du film, tu as peut-être intérêt a créer un objet, dans lequel tu isolerais le nom du film dans un variable.
Et là il te faudrait implémenter Icomparable.
pour exemple je veux trier des personne par le prénom:
class Personne
{
public string Nom { get; set; }
public string Prenom { get; set; }
}
J'écris que Personne implémente Icomparable
class Personne:IComparable
Là je fais click droit sur IComparable et "Implementer l'interface" "Implementer l'interface"
Ça va écrire cette méthode
public int CompareTo(Personne other)
{
throw new NotImplementedException();
}
Dans cette méthode je décris comment comparer l'instance en cours à l'instance other:
public int CompareTo(Personne other)
{
return this.Prenom.CompareTo(other.Prenom);
}
Remarques :
- Puisque les string sont, de base, comparables, si tu as une List<string>, tu peux juste mettre .OrderBy(elt => elt).
- "elt" peut être remplacé par ce que tu veux. C'est juste le nom que tu donnes à l'élément courant.
- Le "ThenBy()" est facultatif. Tu peux aussi en mettre plusieurs si tu le souhaites.
- Tu peux, derrière, appeler la méthode .ToList() pour récupérer une List<T> plutôt qu'un IOrderedEnumerable<T>.
Krimog : while (!(succeed = try())) ; - Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 15 oct. 2012 à 19:53
Oui, mais moi je suis un ouf ! Je change de méthode ^^
Non, plus sérieusement, implémenter IComparable, c'est très bien pour les classes sur lesquelles on va faire le même tri régulièrement. Je présentais juste une façon simple si l'on cherche ponctuellement à trier un IEnumerable.
Krimog : while (!(succeed = try())) ; - Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -