使用IComparable进行反向排序

时间:2014-07-31 15:59:18

标签: c#

我有这样的代码 -

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(),但我似乎无法弄清楚如何按相反顺序排序。

4 个答案:

答案 0 :(得分:7)

如果您想要撤消订单,只需反转比较:

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

答案 1 :(得分:3)

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

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

只是做:

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

答案 2 :(得分:3)

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

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

答案 3 :(得分:0)

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

}