Array.Sort()by string tkey

时间:2015-02-19 17:01:39

标签: .net arrays vb.net sorting

我有两个阵列; indexArray() as StringvalueArray() as Decimal

indexArray实际上是一个数字列表,采用字符串格式。我想对indexArray进行排序(同时保持valueArray中的相应值相同),方法是按十进制对应的数字顺序递增。

以下是我尝试的内容:

Array.Sort(Of String, Decimal)(indexArray, valueArray, Nothing)

我已经查看了IComparer的对象,但是我无法很好地掌握如何让一个人做我需要的东西,但我确信这可能是答案;或者甚至更简单的东西,我不会想到足够的东西!

1 个答案:

答案 0 :(得分:3)

不确定是否有其他方法,所以如果有人有更好的想法,请等待,但您可以使用自定义类列表来存储您的值,然后请求Linq OrderBy方法对您的列表进行排序值

Sub Main
    Dim indexArray() as String = {"1.1", "12.2", "10.3", "2.4", "2.1"}
    Dim valueArray() as Decimal = {1.1, 12.2, 10.3, 2.4, 2.1}

    Dim listOfValues = new List(Of MyValues)
    for x = 0 to indexArray.Length - 1
        listOfValues.Add(new MyValues() With {.stringValue = indexArray(x), .decimalValue = valueArray(x)})
    Next

    Dim result = listOfValues.OrderBy(Function(x) x.decimalValue)

    for each mv in result
        Console.WriteLine(mv.stringValue)
    Next

End Sub

Class MyValues
    Public stringValue as String
    Public decimalValue as Decimal
End Class