C#中 对Class进行排序的方法

在制作的一些排行榜时,总是会用到排序,我们往往会建立一个类,里面会包含名字,分数等等的属性。

然后我们会对这个新建的类进行排序,到这一步的时候我往往会忘记具体排序怎么去写。

这里我做一下记录,列出几种比较常见的排序方法。

首先定义一个List类,这个类里面包含了Name和Total两个属性变量,下面就是针对这两个变量进行排序。

public class Player
{
    public string Name { get; set; }
    public int Score{ get; set; }

    public Player(string name, int score)
    {
        Name = name;
        Score= score;
    }
}

然后我们创建一个List并且添加了6条数据。

List<Player> lst = new List<player>();
lst.Add(new Player("aa", 1));
lst.Add(new Player("bb", 2));
lst.Add(new Player("cc", 3));
lst.Add(new Player("dd", 4));
lst.Add(new Player("ee", 5)); 
lst.Add(new Player("ff", 6));

我们通过List.Sort() 方法来进行排序
1:通过Total变量来进行升序排序

lst.Sort(delegate(Player x, Player y)
{
    return x.Score.CompareTo(y.score);
});

2:通过Total进行降序排序

lst.Sort(delegate(Player x, Player y)
{
    return y.Score.CompareTo(x.score);
});

3:通过多个元素进行排序

lst.Sort(delegate(Player x, Player y)
{
    int a = y.Score.CompareTo(x.score);

    if (a == 0)
        a = x.Name.CompareTo(y.Name);

    return a;
});

4:通过Linq进行排序

var result1 = lst.OrderBy(a => a.Score);

var result3 = lst.OrderBy(a => a.Score).ThenBy(a => a.Name);

var result2 = lst.OrderByDescending(a => a.Score).ThenByDescending(a => a.Name);

比起自己去用数值排序来说可以说是非常简单方便了,希望能帮到大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值