代码之家  ›  专栏  ›  技术社区  ›  Gamma

如何检查动态if条件

  •  -2
  • Gamma  · 技术社区  · 6 年前

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

    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倍 10 < x && x < 40 x=25 两种情况都会过去的。因此,我还需要防止将那些无效、混乱的条件存储在数据库中。请给我一个解决办法。如何通过应用程序检查动态if条件如何在数据库中正确存储条件(SQL Server)

    谢谢您。

    更新 :假设将来我需要向系统添加附加条件(也需要更改当前条件),例如: else if (40< x && x < 60) . 如果我硬编码为belove代码,我就不能这么做。所以我打算把条件存储在数据库中,但我不知道该怎么做。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Sean Lange    6 年前

    不完全确定您想要完成什么,但下面是我将如何将您的条件存储在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)
    

    然后您只需要一个简单的查询来返回任何输入值的正确映射值。像这样的事情应该行得通。这只是一个猜测,你想做什么,但它确实为张贴的样本工作。您可以调整范围并调整<或<=etc以适应需要处理的逻辑。

    declare @x int = 251 --this represents the user input value
    
    select *
    from MyConditions
    where @x > isnull(MinValue, @x - 1)
        AND @x <= isnull(MaxValue, @x)