如何排序列表<>存储在struct my List<>中的整数持有

时间:2011-06-21 11:20:43

标签: c# list sorting

我需要为我写的游戏排序一个高分文件。

每个高分都有一个名称,分数和日期变量。我将每个人存储在一个列表中。

这是保存每个高分数据的结构。

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

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

那么我如何按列表中每个对象的得分变量对高分榜的类型进行排序呢?

感谢任何帮助:D

5 个答案:

答案 0 :(得分:49)

我不知道为什么每个人都在提出需要额外内存的基于LINQ的解决方案(特别是因为Highscore是一种值类型),如果想要重用结果,则调用ToList()。最简单的解决方案是使用List的内置Sort方法

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

这将对列表进行排序。

答案 1 :(得分:5)

var sortedList = yourList.OrderBy(x => x.Score);

或使用OrderByDescending以相反的方式排序

答案 2 :(得分:1)

使用LINQ:

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

Here是了解不同LINQ运算符的绝佳资源。

答案 3 :(得分:0)

List<Highscore> mylist = GetHighScores();

var sorted = mylist.OrderBy(h=>h.Score);

答案 4 :(得分:0)

这将首先对具有最高分数的列表进行排序:

IEnumerable<Highscore> scores = GetSomeScores().OrderByDescending(hs => hs.Score);