Sre*_*r P 3 c# linq boolean-logic dynamic-linq logical-operators
在我的项目中有一个Logic evaluation
部分,它将输入作为包含logical expressions
(true/false
)的字符串.
我想评估此字符串并返回最终的布尔值.
string Logic="1&0|1&(0&1)"
//string Logic="true AND false OR true AND (false AND true)"
Run Code Online (Sandbox Code Playgroud)
这将是我的Logic
.长度可能会增加.
有没有办法评估这个表达式LINQ / Dynamic LINQ
?
fix*_*gon 12
没有任何第三方库的方法是使用带表达式的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];
Run Code Online (Sandbox Code Playgroud)
表达式语法与您的示例不同,但它执行相同的操作.一个优点是它的100%.NET框架包含 - > Microsoft管理.错误处理也不错.缺少运营商等的例外情况......
小智 9
这甚至比@fixagon 给出的解决方案还要短:
System.Data.DataTable table = new System.Data.DataTable();
bool result = (bool)table.Compute("true and false or true", "");
Run Code Online (Sandbox Code Playgroud)
True
,False
,Not
运算符和括号是允许的。
归档时间: |
|
查看次数: |
7943 次 |
最近记录: |