【问题标题】:calculate xor expression using DataTable in C#在 C# 中使用 DataTable 计算异或表达式
【发布时间】:2020-08-01 15:43:07
【问题描述】:

我想计算像(true xor false) 这样的逻辑表达式,我使用了DataTable,但它不支持xor。如何计算xor 表达式?

System.Data.DataTable table = new System.Data.DataTable();
var result = table.Compute("( False xor True) ", "");

【问题讨论】:

  • 不知道我是否理解,但您是在询问 C# 中的 XOR 运算符 (^) 吗?
  • 确实,目前的问题还不清楚——至少我当然不明白你在问什么。您实际上是在询问用 C# 表达逻辑,还是尝试解析包含文本“(true And (false) [etc])”的 string 并对其进行评估? (我注意到您的标签包括“数据表”,但在问题正文中没有任何引用...)
  • 我想计算这个表达式(true And (false) xor(true) [etc]) 的结果。例如创建一个获取此字符串并返回结果的方法
  • 啊,您正在尝试解析包含 C# 表达式的字符串。
  • 是的,我找到了System.Data.DataTable table,但它不支持xor

标签: c# .net .net-core datatable xor


【解决方案1】:

您正在尝试解析包含 C# 逻辑表达式的字符串。有多种方法:

  1. 由于您的逻辑表达式仅使用 truefalseandor 的不同组合>xor,带括号,您可以推出自己的解析器。应该是一个非常苗条的功能。

  2. 如果您在DataTable 的上下文中使用它,从问题标签中可以明显看出,有一个名为Compute 的内置函数可以接受简单的表达式并为您计算它们。默认情况下,XOR 在支持的运算符列表中不可用,但您可以使用 not equal to 运算符 () 编写等效表达式。记住 A ^ B 等价于 DataTable 的布尔表达式上下文中的 (A B)

  3. 您可以使用 Roslyn 的内置功能并在运行时解析和评估任何 C# 表达式。

【讨论】:

  • 可以为DataTable做一个计算Xor表达式的例子
  • 感谢您的回答,但第二个解决方案需要一些硬代码来找到右括号和....请参阅此示例:(A and B)xor B And (A And B)。第三种解决方案直接支持'Xor'?可以发送一些参考吗?
  • 我知道在DataTable等于可以用=实现。你知道DataTable中的不等于什么吗?这可以帮助实现xor
猜你喜欢
  • 1970-01-01
  • 2019-03-28
  • 2017-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
相关资源
最近更新 更多