3

有一个数组

int[] array = new int[]{6,4,10,7,7,9};

和一个数字 8。

我想按最近的数字对 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

我怎样才能对这些数字进行排序。任何想法?

4

3 回答 3

4
var result = array.OrderBy(i => Math.Abs(i - value))
             .ThenBy(i => i < value)
             .ToArray();
于 2012-04-12T20:56:15.960 回答
2
int nearbyNumber = 8;
var query = array.OrderBy(number => Math.Abs(number - nearbyNumber ));

ToArray如果你真的需要一个数组,你可以打电话。

如果你真的想对数组进行排序,你可以制作一个自定义的 Comparer 对象并使用Array.Sort,但这需要更多的工作......

于 2012-04-12T20:56:24.493 回答
1
var array = new int[] { 6, 4, 10, 7, 7, 9 };
int target = 8;
var values = array.OrderBy(i => Math.Abs(i - target)).ToArray();

编辑我很快就得到了这个答案,然后用一些验证码询问我是否是人类。非常感谢!:)

于 2012-04-12T20:58:14.747 回答