我需要通过我的应用程序检查动态条件。这是我的应用程序的示例代码。
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 < 30
和10 < x && x < 40
,则当 x = 25 时,两个条件都将通过。因此,我还需要防止将那些无效的,混乱的条件存储在数据库中。请给我一个解决方案。如何通过应用程序检查动态条件以及如何在数据库(SQL Server)中正确存储条件
谢谢。
更新:假设将来我需要向系统添加其他条件(也需要更改当前条件),例如:else if (40< x && x < 60)
。如果我将代码硬编码为belove代码,则无法执行此操作。为此,我计划将条件存储在db中,但是我不知道要这样做。
答案 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)