我有一个“Q19_1_1”、“Q19_10_1”、“Q19_5_1”形式的字符串数组列表。使用正常的排序方法,列表将被排序为
"Q19_1_1"
"Q19_10_1"
"Q19_5_1"
但我想根据名称中的第二个整数和第三个整数对它进行数字排序。所以我想:
"Q19_1_1"
"Q19_5_1"
"Q19_10_1"
我的子:
Dim varSet As New ArrayList
varSet.Add("Q19_1_1")
varSet.Add("Q19_10_1")
varSet.Add("Q19_5_1")
varSet.Sort(New VariableComparer())
我有一个 IComparer:
Public Class VariableComparer
Implements IComparer(Of String)
Public Function Compare(ByVal x As String, ByVal y As String) As Integer Implements System.Collections.Generic.IComparer(Of String).Compare
Dim varPartsX As Array
Dim varPartsY As Array
varPartsX = x.Split("_")
varPartsY = y.Split("_")
Return String.Compare(varPartsX(1), varPartsY(1))
End Function
End Class
但是当我尝试排序时,我得到了错误:
Unable to cast object of type 'VBX.VariableComparer' to type 'System.Collections.IComparer'.
VariableComparer 实现了 IComparer 但我猜它不能是 IComparer(Of String) 类型?
我该如何解决这个问题?我错过了什么?