如何检查条件是否动态

时间:2018-08-03 15:09:52

标签: c# sql sql-server if-statement conditional-statements

我需要通过我的应用程序检查动态条件。这是我的应用程序的示例代码。

class Program
{
    static void Main(string[] args)
    {
        int newValue = 0;
        Console.WriteLine("Enter NO");
        int x = int.Parse(Console.ReadLine());
        if (10 < x && x < 20)
        {
            newValue = 1;
        }
        else if (20 < x && x < 30)
        {
            newValue = 2;
        }
        else
        {
            newValue = 3;
        }
    }
}

但是我需要动态检查那些条件(20 < x && x < 30)。我怎样才能做到这一点?我需要通过数据库获取这些条件。这意味着我需要将这些条件存储在数据库表中。但是这里也有问题如果数据库具有两个条件20 < x && x < 3010 < x && x < 40,则当 x = 25 时,两个条件都将通过。因此,我还需要防止将那些无效的,混乱的条件存储在数据库中。请给我一个解决方案。如何通过应用程序检查动态条件以及如何在数据库(SQL Server)中正确存储条件

谢谢。

更新:假设将来我需要向系统添加其他条件(也需要更改当前条件),例如:else if (40< x && x < 60)。如果我将代码硬编码为belove代码,则无法执行此操作。为此,我计划将条件存储在db中,但是我不知道要这样做。

1 个答案:

答案 0 :(得分:3)

不能完全确定您要完成什么,但是这是我将在sql中存储您的条件的方法。首先,我们需要一个表和一些数据(这应该是您发布的示例)。

create table MyConditions
(
    ConditionID int identity primary key clustered
    , MinValue int
    , MaxValue int
    , Result int
)

insert MyConditions
(
    MinValue
    , MaxValue
    , Result
) values
(10, 20, 1)
, (20, 30, 2)
, (null, 10, 3)
, (30, null, 3)

然后,您只需要一个简单的查询即可为任何输入值返回正确的映射值。这样的事情应该起作用。这实际上只是对您要尝试执行的操作的猜测,但确实适用于发布的示例。您可以调整范围并调整<或<=等以适合您需要处理的逻辑。

declare @x int = 251 --this represents the user input value

select *
from MyConditions
where @x > isnull(MinValue, @x - 1)
    AND @x <= isnull(MaxValue, @x)