使用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()
,但我似乎不知道如何使它按反向排序。
如果您想颠倒顺序,只需颠倒比较:
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;
}