我有一个整数数组
Dim intArray() as integer = {1, 1, 5, 9, 9, 10, 15, 15, 23, 25}
我想用这个数组的不同值来排序
1-1,9-5,10-9,15-15,25-23 = {0,4,1,0,2}
重新排序,上升:{0,0,1,2,4}
我想要这个结果
intArray = {1, 1, 15, 15, 9, 10, 23, 25, 5, 9}
谢谢
发布于 2015-12-08 21:26:03
下面是如何使用LINQ实现这一目的:
Dim result = intArray _
.Select(Function(x, i) New With {.Value = x, .Index = i}) _
.GroupBy(Function(x) x.Index \ 2) _
.Select(Function(x) x.Select(Function(y) y.Value).ToList()) _
.OrderBy(Function(x) x(1) - x(0)) _
.SelectMany(Function(x) x) _
.ToArray()
这段代码首先选择每个元素的值和索引(因为我们需要索引将每个元素组合在一起),然后它将每两个元素组合在一起,并将它们放入自己的列表中(就像我们有一个大小列表--两个列表)。然后,根据第二个和第一个值之间的差异对这些列表进行排序。然后,它为列表列表重新创建一个列表。
https://stackoverflow.com/questions/34165952
复制相似问题