有一个数组
int[] array = new int[]{6,4,10,7,7,9};
和8号。
我想用最接近的数字对数组进行排序。
最近的数字:分别为9,7,7,10,6,4
因为9-1 = 8,7 + 1 = 8,7 + 1 = 8,10-2 = 8,6 + 2 = 8,4 + 4 = 8
我该如何对这些数字进行排序。 任何想法?
答案 0 :(得分:4)
var result = array.OrderBy(i => Math.Abs(i - value))
.ThenBy(i => i < value)
.ToArray();
答案 1 :(得分:2)
int nearbyNumber = 8;
var query = array.OrderBy(number => Math.Abs(number - nearbyNumber ));
如果您确实需要阵列,可以致电ToArray
。
如果你真的想要对数组进行排序,你可以创建一个自定义的Comparer对象并使用Array.Sort
,但这还有更多工作......
答案 2 :(得分:1)
var array = new int[] { 6, 4, 10, 7, 7, 9 };
int target = 8;
var values = array.OrderBy(i => Math.Abs(i - target)).ToArray();
编辑我的答案非常快,然后我用一些验证码询问是否是人类来阻止我。非常感谢! :)