无法排序,原因是 IComparer.Compare() 方法返回不一致的结果。一个值与本身比较不相等,或者一个值与另外一个值重复比较生成不同的结果

无法排序,原因是 IComparer.Compare() 方法返回不一致的结果。一个值与本身比较不相等,或者一个值与另外一个值重复比较生成不同的结果。

今天做项目时对一个List<>进行计算排序时出现上述错误,错误很明显,一个值与本身比较不相等,或者一个值与另外一个值重复比较生成不同的结果。

因为计算中除法分母可能含有0,单纯地判断分母是否为0是不够的,因为分子可能有多种值的情况,所以便会出现:

一个值与本身比较不相等,或者一个值与另外一个值重复比较生成不同的结果。

优化计算代码:

xProfitRate=x.t==0?0:x.a/x.t;

yProfitRate=y.t==0?0:y.a/y.t;

然后在进行比较:

if(xProfitRate==yProfitRate)

    return 0;

if(xProfitRate>yProfitRate)

    return -1;

if(xProfitRate<yProfitRate)

    return -1;

else

    return 1;

完美解决问题!网友如果出现该问题,建议先排除是否存在与本身比较不相等,或者一个值与另外一个值重复比较生成不同的结果的情况。


欢迎分享,(木庄网络博客交流QQ群:562366239

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论