Je dois trier un fichier de scores élevés pour mon jeu que j'ai écrit.
Chaque highscore a une variable Nom, Score et Date. Je stocke chacun dans une liste.
Voici la structure qui contient chaque donnée de meilleurs scores.
struct Highscore
{
public string Name;
public int Score;
public string Date;
public string DataAsString()
{
return Name + "," + Score.ToString() + "," + Date;
}
}
Alors, comment pourrais-je trier une liste de type Highscores par la variable score de chaque objet de la liste?
Toute aide est appréciée: D
Je ne sais pas pourquoi tout le monde propose des solutions basées sur LINQ qui nécessiteraient de la mémoire supplémentaire (d'autant plus que Highscore est un type de valeur) et un appel à ToList () si l'on souhaite réutiliser le résultat. La solution la plus simple consiste à utiliser la méthode de tri intégrée d'une liste.
list.Sort((s1, s2) => s1.Score.CompareTo(s2.Score));
Cela va trier la liste en place.
var sortedList = yourList.OrderBy(x => x.Score);
ou utilisez OrderByDescending
pour trier de manière opposée
Utilisez LINQ:
myScores.OrderBy(s => s.Score);
Ici est une excellente ressource pour en savoir plus sur les différents opérateurs LINQ.
List<Highscore> mylist = GetHighScores();
var sorted = mylist.OrderBy(h=>h.Score);
Cela va trier la liste avec les meilleurs scores en premier:
IEnumerable<Highscore> scores = GetSomeScores().OrderByDescending(hs => hs.Score);