C# OrderBy(item=>;false)是否影响列表顺序?

C# OrderBy(item=>;false)是否影响列表顺序?,c#,.net,C#,.net,OrderBy(item=>false)是否影响数组顺序 我想将某些元素移动到数组的末尾: var numbers = new[] { 3, 7, 4, 1, 5 }; var result = numbers.OrderBy(item => item == 4).ToArray(); 此解决方案是否有任何副作用影响其他元素的顺序(!=4) 不,这很好,带有true(4)的结果将在列表的末尾,您的结果将是3、7、1、5、4没有副作用,因为OrderBy在IEnumerable上运行,它没

OrderBy(item=>false)是否影响数组顺序

我想将某些元素移动到数组的末尾:

var numbers = new[] { 3, 7, 4, 1, 5 };
var result = numbers.OrderBy(item => item == 4).ToArray();

此解决方案是否有任何副作用影响其他元素的顺序(!=4)

不,这很好,带有true(4)的结果将在列表的末尾,您的结果将是3、7、1、5、4

没有副作用,因为
OrderBy
IEnumerable
上运行,它没有任何方法来改变集合

您所说的“副作用”是什么意思?这是因为它是按bool的数值排序的,在.NET中,0表示false,1表示true。您是否在询问是否将保留非4的项目的顺序?如果您的问题是OrderBy是否“稳定”,即保留具有相同排序值的项目的顺序,请参阅duplicate:yes。@CodeCaster-虽然对于某些true值可能为“true”,但实际上是排序,因为bool实现了IComparable。与任何(暴露的)“数值”无关@Damien哎哟,我可能在这里混淆了一两件事,谢谢你的澄清。@CodeCaster“你是在问,对于不是4的项目,是否会保留订单?”-是的,如果你将“副作用”解释为“改变基础集合”,这是正确的。OP可能意味着其他东西。从Wikipedia
来看,除了向操作的调用方返回一个值(主要效果)之外,OP还有一个可观察的效果,因此OP很可能意味着基础集合,而不是输出序列。我不是要求一个任意的定义,我是问OP的含义是什么。回答猜测是没有用的。@CodeCaster,但这个问题包括一个术语
副作用
,仅仅因为某个小样本看起来不错,并不意味着它总体上是好的。正如副本所解释的,
OrderBy
被显式地实现为稳定的