即使在应用返回 0 时,进入此的初始列表也会出现不同的顺序。我认为返回 0 会使游戏保持与最初处理的顺序相同,但情况似乎并非如此。如果没有其他任何回报被击中,订单不应该与原始数组保持一致吗?games.Sort((game1, game2) => { DateTime? minMaxDate1 = null; DateTime? minMaxDate2 = null; minMaxDate1 = FindDateRestriction(autoSchedulerLists, game1.AwayTeam, minMaxDate1); minMaxDate1 = FindDateRestriction(autoSchedulerLists, game1.HomeTeam, minMaxDate1); minMaxDate2 = FindDateRestriction(autoSchedulerLists, game2.AwayTeam, minMaxDate2); minMaxDate2 = FindDateRestriction(autoSchedulerLists, game2.HomeTeam, minMaxDate2); if (minMaxDate1.HasValue && !minMaxDate2.HasValue) return -1; if (minMaxDate2.HasValue && !minMaxDate1.HasValue) return -1; if (minMaxDate1.HasValue && minMaxDate2.HasValue && minMaxDate1 != minMaxDate2) { return minMaxDate1 < minMaxDate2 ? -1 : 1; } return 0; });
1 回答
斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
如果所有项目都返回 0,订单不应该与原始数组保持一致吗?
不,List<T>.Sort
...
执行不稳定排序;也就是说,如果两个元素相等,它们的顺序可能不会被保留。相反,稳定排序保留相等元素的顺序
如果你想要一个稳定的排序,你可以使用 LINQ 的OrderBy
.
此方法执行稳定排序;也就是说,如果两个元素的键相等,则保留元素的顺序。相反,不稳定排序不会保留具有相同键的元素的顺序。
所以像:
games = games.OrderBy(g => /* logic here */) .ToList();
- 1 回答
- 0 关注
- 163 浏览
添加回答
举报
0/150
提交
取消