我有一个按 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