Как сортировать список <> по целому числу, хранящемуся в структуре my List <>
Мне нужно отсортировать файл рекорда для своей игры, которую я написал.
Каждый рекордер имеет переменную Name, Score и Date. Я храню каждый в списке.
Вот структура, которая содержит данные каждого рекордера.
struct Highscore
{
public string Name;
public int Score;
public string Date;
public string DataAsString()
{
return Name + "," + Score.ToString() + "," + Date;
}
}
Итак, как бы я сортировал список типов рекордов по переменной оценки каждого объекта в списке?
Любая помощь приветствуется: D
Ответы
Ответ 1
Я не знаю, почему все предлагают решения на основе LINQ, которые потребуют дополнительной памяти (особенно, поскольку Highscore - это тип значения) и вызов ToList(), если вы хотите повторно использовать результат. Простейшим решением является использование встроенного метода сортировки List
list.Sort((s1, s2) => s1.Score.CompareTo(s2.Score));
Это отсортирует список на месте.
Ответ 2
var sortedList = yourList.OrderBy(x => x.Score);
или используйте OrderByDescending
для сортировки в обратном направлении
Ответ 3
Используйте LINQ:
myScores.OrderBy(s => s.Score);
Здесь - отличный ресурс, чтобы узнать о различных операциях LINQ.
Ответ 4
List<Highscore> mylist = GetHighScores();
var sorted = mylist.OrderBy(h=>h.Score);
Ответ 5
Сначала будет отсортирован список с наивысшими баллами:
IEnumerable<Highscore> scores = GetSomeScores().OrderByDescending(hs => hs.Score);