无法排序,原因是 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)