0

我有一个 case 语句,它通过获取诸如“eq,ne,gt,...”之类的参数来比较数据。实际上这个方法会通过获取过滤器参数和过滤器值来过滤数据。如何重构下面的代码?谢谢。

                      For iRow As Integer = 1 To ......
                                       .......
                                      columnData = rowData(HeaderIndex)

                                       Case "eq"
                                            If Not (columnData = filterData) Then
                                                arrayDel(iRow) = True
                                                droppedRows += 1
                                            End If

                                        Case "ne"
                                            If Not (columnData <> filterData) Then
                                                arrayDel(iRow) = True
                                                droppedRows += 1
                                            End If

                                        Case "gt"
                                            If Not (columnData > filterData) Then
                                                arrayDel(iRow) = True
                                                droppedRows += 1
                                            End If

                                        Case "ge"
                                            If Not (columnData >= filterData) Then
                                                arrayDel(iRow) = True
                                                droppedRows += 1
                                            End If
4

1 回答 1

2

一种方法可能是使用一个函数来获取您的字符串和列并过滤数据并简单地返回相关的布尔值。

Case "eq"
    return (columnData = filterData)
Case "ne"
    return (columnData <> filterData)
Case "gt"
    return (columnData > filterData)
Case "ge"
    return (columnData >= filterData)

这更容易查看并且省去了重复的行(现在在调用我们的新函数后只在一个地方调用)。

于 2012-06-04T13:31:07.167 回答