使用IComparable进行反向排序

8 c# sorting icomparable

我有这样的代码 -

List<User> users;
protected class User : IComparable<User>
{
    public string name;
    public string email;
    public decimal total;
    public string address;
    public string company;
    public string origin;
    public int CompareTo(User b)
    {
        return this.total.CompareTo(b.total);

    }
}
Run Code Online (Sandbox Code Playgroud)

对于按用户拥有的点数排序的表.它按升序排序,但需要将其更改为降序.它使用users.Sort(),但我似乎无法弄清楚如何使它按相反的顺序排序.

Sel*_*enç 9

如果要颠倒顺序,只需反转比较:

public int CompareTo(User b)
{
    return b.total.CompareTo(this.total);
}
Run Code Online (Sandbox Code Playgroud)


Sri*_*vel 5

如果您的User班级可以更改为按相反顺序排序,您可以尝试其他建议修改CompareTo方法的答案。否则请尝试以下操作。

users.Sort();//Sort normally
users.Sort((x, y) => y.CompareTo(x));//Reverse sort
Run Code Online (Sandbox Code Playgroud)