c#中的逻辑评估器(评估逻辑(&&,||)表达式)
在我的项目中有一个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管理。 error handling也不错。 缺少运营商等的例外情况……
可用的运营商
你可以使用Zentrum 。
完全免责声明:我写了!
我们正在使用http://simproexpr.codeplex.com/