使用iccomparable进行反向排序

本文关键字:排序 iccomparable 使用 | 更新日期: 2023-09-27 18:15:54

我有这样的代码-

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);
    }
}

对于按用户所拥有的点数排序的表。它按升序排序,但需要将其更改为降序。它使用users.Sort(),但我似乎不知道如何使它按反向排序。

使用iccomparable进行反向排序

如果您想颠倒顺序,只需颠倒比较:

public int CompareTo(User b)
{
    return b.total.CompareTo(this.total);
}

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

users.Sort();//Sort normally
users.Sort((x, y) => y.CompareTo(x));//Reverse sort

只需在比较中反转参数。所以不是:

return this.total.CompareTo(b.total);

只做:

return b.total.CompareTo(this.total);
public int CompareTo(User b)
{
    return this.total.CompareTo(b.total) * -1;
}