c# - 在 C# 中检查是否为字符串格式的条件

标签 c# string if-statement c#-4.0 conditional-statements

我不确定天气是否可能,但我必须以某种方式在我的项目中做到这一点。 我得到一个字符串格式的条件,例如:

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 可以评估您的字符串:

demo

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/

相关文章:

javascript - 为什么 Ext flash 组件连接两个字符串来形成这个 url?

c - 与 0.9 相比,为什么 >= 运算符在 C 中与 > 运算符一样工作

java - 对象 == null 与 boolean == false

java - 我在if语句和removeDie中的 boolean 值相等似乎有错误,我在删除一个骰子时遇到问题,如何解决这两个问题?

c# - 错误 MSB4057 : The target "Package" does not exist in the project file named MVCWebUIComponent. csproj

用于处理字体文件的 C# 库 - TTF (TrueType),其他

java - 从字符串中提取字符和整数

c++ - 将字符串转换为长

c# - 是否应该路由 MVVM 事件?

c# - 在中继器控制中设置中断