C# List.Sort() 出现无法排序,原因是 IComparer.Compare() 方法返回不一致的结果。一个值与本身比较不相等,或者一个值与另外一个值

Null_Link 2020-11-06 09:59:59
C# List.Sort() 出现报错无法排序,原因是 IComparer.Compare() 方法返回不一致的结果。一个值与本身比较不相等,或者一个值与另外一个值重复比较生成不同的结果
有大佬知道怎么解决吗
...全文
15315 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
干嘛用lambda表达式,看起来好繁琐
shawn_yang 2020-11-09
  • 打赏
  • 举报
回复
自己重写compare,可以按你的需求判定大小
syeerzy 2020-11-09
  • 打赏
  • 举报
回复
或简化为: (a, b) => { var aa = a.Name.Contains("XXX"); var bb = b.Name.Contains("XXX"); if (aa && !bb) return -1; else if (!aa && bb) return 1; else return 0; }
syeerzy 2020-11-09
  • 打赏
  • 举报
回复
你lambda里面的逻辑错了, 你想按什么排序? 我按你的代码猜想你可能的排序逻辑是想把Name里面带有某个字符串"XXX"的排后面, 其他排前面, 其他具体顺序无所谓. 如果这样, 你应该是这么写: (a, b)=> { if (a.Name.Contains("XXX")){ if(b.Name.Contains("XXX")) return 0; else return 1; } else if (b.Name.Contains("XXX")) return -1; else return 0; }
yijigu2 2020-11-06
  • 打赏
  • 举报
回复
a.CompareTo(b)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧