OrderBy的特例

时间:2018-04-02 07:32:09

标签: c# linq sorting

什么是

.OrderBy(x => x == somevalue)

做什么?它一些值元素排序到最后。但为什么

代码示例:

var arr = new int[] { 1, 2, 3 };
var arr2 = arr.OrderBy(x => x == 2).ToArray();
// arr2 --> 1, 3, 2

1 个答案:

答案 0 :(得分:17)

您按bool排序,因为x == 2booltrue x == 2,否则false。如果boolbool实施IComparable<bool>

https://msdn.microsoft.com/en-us/library/kf07t5s5(v=vs.110).aspx

 false < true

这就是为什么

 OrderBy(x => x == 2)

表示“的第一个值等于2然后2 s”。

 {1, 2, 3} -> {1, 3, 2}

修改:最后,OrderBy稳定排序,这就是1, ..., 31 3之前{3, 1, 2}的原因。 1}})已被保留(如果你使用不稳定的排序算法对数组进行排序,比如快速排序,你可以得到hibernate.dialect=org.hibernate.dialect.Oracle10gDialect hibernate.hbm2ddl.auto=validate