Как отсортировать список <> по целому числу, хранящемуся в структуре my List <> - PullRequest
18 голосов
/ 21 июня 2011

Мне нужно отсортировать файл рекордов для моей игры, которую я написал.

У каждого рекорда есть переменные Name, Score и Date.Я храню каждый из них в списке.

Вот структура, которая содержит данные каждого рекорда.

struct Highscore
{
    public string Name;
    public int Score;
    public string Date;

    public string DataAsString()
    {
        return Name + "," + Score.ToString() + "," + Date;
    }
}

Так как бы отсортировать список рекордов типа по переменной Score каждого объектав списке?

Любая помощь приветствуется: D

Ответы [ 5 ]

49 голосов
/ 21 июня 2011

Я не знаю, почему все предлагают решения на основе LINQ, для которых потребовалась бы дополнительная память (особенно с учетом того, что Highscore является типом значения) и вызов ToList (), если кто-то хочет повторно использовать результат. Самое простое решение - использовать встроенный метод сортировки списка

list.Sort((s1, s2) => s1.Score.CompareTo(s2.Score));

Это позволит отсортировать список по месту.

5 голосов
/ 21 июня 2011
var sortedList = yourList.OrderBy(x => x.Score);

или используйте OrderByDescending для сортировки в обратном порядке

1 голос
/ 21 июня 2011

Использовать LINQ:

myScores.OrderBy(s => s.Score);

Здесь - отличный ресурс для изучения различных операторов LINQ.

0 голосов
/ 21 июня 2011

Сначала будет отсортирован список с наибольшим количеством баллов:

IEnumerable<Highscore> scores = GetSomeScores().OrderByDescending(hs => hs.Score);
0 голосов
/ 21 июня 2011
List<Highscore> mylist = GetHighScores();

var sorted = mylist.OrderBy(h=>h.Score);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...