【问题标题】:Array.Sort() by string tkeyArray.Sort() 按字符串 tkey
【发布时间】:2015-02-19 17:01:39
【问题描述】:

我有两个数组; indexArray() as StringvalueArray() as Decimal

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

这是我尝试过的:

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

我研究了 IComparer 对象,但我无法很好地掌握如何让一个对象做我需要的事情,但我确信这很可能是答案;或者更简单的东西,我不知道怎么想!

【问题讨论】:

  • 不得不问 - 为什么你有两个数组?为什么不在小数点上使用 ToString 呢?您在 indexArray 中有一些非常奇怪的表示吗?

标签: .net arrays vb.net sorting


【解决方案1】:

不确定是否有其他方法,所以如果有人有更好的主意,让我们等待,但您可以使用自定义类的列表来存储您的值,然后让 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 2014-11-04
    • 2021-06-12
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    相关资源
    最近更新 更多