动态构建评估条件

时间:2013-06-28 08:57:53

标签: vb.net

我是vb.net的新手需要帮助来解决这个问题:

以下来自数据库

Param1: 100
Param2: 184
Comparion Operator: >

在vb.net中 - 我需要生成如下代码:

If 100>184 Then
'Do something
Else
'Do something
End

由于价值来自数据库,我真的很难在vb.net中生成上述代码。

我没有尝试任何东西,我很难为此编写代码。

3 个答案:

答案 0 :(得分:0)

你必须依赖一系列条件或开关......案例。你可以获得一些灵感here

因此,您提出的具体案例的解决方案应该是:

Private Function checkSituation(ByVal val1 As Integer, ByVal inputOperator As String, ByVal val2 As Integer) As Boolean

    Select Case inputOperator
        Case ">"
            Return val1 > val2
        Case "<"
            Return val1 < val2
        Case "="
            Return val1 = val2
    End Select

End Function

在你的情况下:

    If (checkSituation(100, ">", 184)) Then


    End If

答案 1 :(得分:0)

我实现了一个类Comparator,它有一个方法,如果满足条件则返回true,如果没有则返回false。我不熟悉VB.NET,但我会在C#中尝试以下内容:

public static class Comparator
{
    public static bool Compare(int value1, int value2, string operator)
    {
        switch (operator)
        {
           case "<" : return value1 < value2;
           case "<=" : return value1 <= value2;
           case ">" : return value1 > value2;
           ...
        }
    }
}

答案 2 :(得分:0)

尝试这样的事情:

Private Function EvalData(param1 As Integer, param2 As Integer, operator As String) As Boolean
    Select Case operator
        Case ">" : Return param1 > param2
        Case "<" : Return param1 < param2
        Case "=" : Return param1 = param2
        Case Else 
            Throw New ApplicationException("No matches for this operator")
    End Select
End Function

然后以这种方式使用它:

If EvalData(param1, param2, operator) Then
    'Do something
Else
    'Do something
End