我不确定天气是否可能,但我必须以某种方式在我的项目中做到这一点。 我得到一个字符串格式的条件,例如:
string condition = "(param1='69' OR param1='66' OR param1='21' OR param1='93') AND (param2='FL' OR param2='WA) AND (param3!='31' AND param3!='19')";
这个条件是我从 db 得到的,我的代码中有 param1、param2 和 param3 的值。现在我必须在 if 语句中检查这个条件是否符合真假并相应地显示结果。
我尝试用实际值替换 param1、param2、param3,比如 69、CA、22。所以字符串看起来像:
condition = "(69='69' OR 69='66' OR 69='21' OR 69='93') AND (CA='FL' OR CA='WA) AND (22!='31' AND 22!='19')";
并尝试在 bool 中转换它,但它不起作用。
请让我知道是否有任何办法,否则我需要硬编码吗? 还有一件事,条件可能非常好,比如有时它会带有 2 个变量,有时会带有 4 个变量。
最佳答案
如果您确实需要在应用程序中测试条件并且可以进一步修改条件字符串,我可以建议您使用 DataTable
进行破解。 DataTable
可以评估您的字符串:
public class Program
{
public static void Main(string[] args)
{
// modified string !
// "!=" -> "<>"; CA -> 'CA'
string condition = "('69'='69' OR '69'='66' OR '69'='21' OR '69'='93') AND ('CA'='FL' OR 'CA'='WA') AND ('22'<>'31' AND '22'<>'19')";
Console.WriteLine(TestCondition(condition));
// print FALSE because ('CA'='FL' OR 'CA'='WA') is FALSE
}
public static bool TestCondition(string c)
{
var dt = new DataTable();
dt.Columns.Add("col");
dt.Rows.Add("row");
// hack
// c is constant and doesn't depend on dt columns
// if there are any rows, c is TRUE
var rows = dt.Select(c);
return rows.Length > 0;
}
}
关于c# - 在 C# 中检查是否为字符串格式的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32516782/