Jon*_*lis 1 c# boolean-expression
我有一串来自客户端的参数.一个例子可能是:
串PARAM = "(AND NAME.FULLNAME DOB.OPTIONAL)OR(ID和DOB.REQUIRED)OR(ID和国家)"
现在,我已经解析了所有传入的数据,并且具有代表每个参数的布尔值.
喜欢 :
bool name_FullName = true;
bool dob_Optional = false;
Run Code Online (Sandbox Code Playgroud)
等等
我正在尝试找到将客户参数表达式评估为True或False的最佳方法.
我想只是用他们的真/假bool替换参数.然后找到任何TRUE AND TRUE并删除它们,并替换TRUE AND FALSE为false.然后评估OR我离开的表达式.
输入后,这似乎是一个很好的方法.有没有人有我错过的更快的解决方案?
另一种选择是创建DataTable并使用该Select方法.
// create data table
var data = new DataTable();
data.Columns.Add("NAME.FULLNAME", typeof(bool));
data.Columns.Add("DOB.OPTIONAL", typeof(bool));
data.Columns.Add("ID", typeof(bool));
data.Columns.Add("DOB.REQUIRED", typeof(bool));
data.Columns.Add("COUNTRY", typeof(bool));
// fill data table
data.Rows.Add(true, false, true, true, false);
// see if it's a match
var isMatch = data.Select("(NAME.FULLNAME AND DOB.OPTIONAL) OR (ID AND DOB.REQUIRED) OR (ID AND COUNTRY)").Any();
Run Code Online (Sandbox Code Playgroud)