如何对列表进行排序<>;通过存储在结构体my List<>;持有

本文关键字:lt gt 存储 结构体 my 持有 List 排序 列表 | 更新日期: 2023-09-27 17:59:40

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

每个highcore都有一个Name、Score和Date变量。我把每一个都存储在一个列表中。

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

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

那么,我该如何根据列表中每个对象的得分变量对类型为高分的列表进行排序呢?

感谢任何帮助:D

如何对列表进行排序<>;通过存储在结构体my List<>;持有

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

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

这将对列表进行适当的排序。

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

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

使用LINQ:

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

这里有一个很好的资源来了解不同的LINQ操作符。

List<Highscore> mylist = GetHighScores();
var sorted = mylist.OrderBy(h=>h.Score);

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

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