0

我有一个按 3 列升序排序的 DataTable。棘手的部分是该列可以包含数字和非数字值。因此,我们看看是否可以强制转换该字段,如果可以,我们进行数字比较,否则我们进行字符串比较。

这在编译版本中效果很好,但在 Visual Studio 2012 中这非常慢......在调试模式下比较需要超过 5 分钟,在编译模式下需要不到一秒钟。

我删除了所有断点,但仍然只有这部分代码在调试模式下变慢。

比较代码:

Public Function CompareValues(ByVal sThis As String, ByVal sOther As String) As Integer
    Dim bFirstNumeric As Boolean = IsNumeric(sThis)
    Dim bOtherNumeric As Boolean = IsNumeric(sOther)

    If bFirstNumeric AndAlso bOtherNumeric Then
        Return Integer.Parse(sThis).CompareTo(Integer.Parse(sOther))
    ElseIf bFirstNumeric And Not bOtherNumeric Then
        Return -1
    ElseIf Not bFirstNumeric And bOtherNumeric Then
        Return 1
    Else
        Return sThis.CompareTo(sOther)
    End If
End Function
4

1 回答 1

0

我会像这样进行 IsNumeric 检查,然后从这里开始。它更干净。

Dim Value1 As Object
Dim Value2 As Object
Dim V1 As Integer
Dim V2 As Integer

Public Function IsNumeric(ByVal Expression As Object) As Boolean

If IsNumeric(Value1) = True And IsNumeric(Value2) = True Then

    V1 = Integer.Parse(Value1)
    V2 = Integer.Parse(Value2)

End If

Return True

End Function

如果您需要更多帮助,请告诉我。

于 2013-06-09T11:50:27.637 回答