c#中的逻辑求值器(&&,||)表达式)
本文关键字:表达式 | 更新日期: 2023-09-27 18:17:29
在我的项目中有一个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框架包含->微软管理。错误处理也不错。缺少操作符等的异常
可用操作符这比@fixagon:
给出的解决方案更短System.Data.DataTable table = new System.Data.DataTable();
bool result = (bool)table.Compute("true and false or true", "");
允许
True
,False
,Not
操作符,以及括号。