【发布时间】:2020-02-27 23:54:23
【问题描述】:
OrderBy(item => false) 会影响数组顺序吗?
我想将某个元素移动到数组的末尾:
var numbers = new[] { 3, 7, 4, 1, 5 };
var result = numbers.OrderBy(item => item == 4).ToArray();
此解决方案是否有影响其他元素顺序的副作用 (!=4)?
【问题讨论】:
-
“副作用”是什么意思?这是有效的,因为它是按布尔值排序的,在 .NET 中,0 表示假,1 表示真。您是在问不是 4 的商品是否会保留订单?
-
如果你的问题是OrderBy是否“稳定”,即对具有相同排序值的项目保留顺序,则查看重复:是。
-
@CodeCaster - 虽然对于某些 true 值可能是“true”,但它实际上是排序的,因为 bool 实现了 IComparable
。与任何(暴露的)“数值”无关 -
@Damien 哎呀,我可能在这里混淆了一两件事,感谢您的澄清。
-
@CodeCaster "你问的是不是 4 的商品是否会保留订单?" - 是的,正是这个