在我的项目中,有一个Logic evaluation
部分,它将输入作为包含logical expressions
( true/false
)的字符串。
我想评估此字符串并返回最终的布尔值。
string Logic="1&0|1&(0&1)"
//string Logic="true AND false OR true AND (false AND true)"
这将是我的Logic
。长度可能会增加。
有什么办法可以从LINQ / Dynamic LINQ
评估此表达式?
没有任何第三方库的一种方法是使用带表达式的DataTable。
您甚至可以对布尔值以外的其他结果值类型进行评估。
System.Data.DataTable table = new System.Data.DataTable();
table.Columns.Add("", typeof(Boolean));
table.Columns[0].Expression = "true and false or true";
System.Data.DataRow r = table.NewRow();
table.Rows.Add(r);
Boolean result = (Boolean)r[0];
表达式语法与您的示例不同,但功能相同。一个优点是它的100%.NET框架包含-> Microsoft管理。错误处理也不错。缺少运算符等的例外情况...