创建一个 n 个表达式
本文关键字:表达式 一个 创建 | 更新日期: 2023-09-27 18:32:19
我有一个 N 个System.Linq.Expressions.Expression
序列,我想将其转换为 N-Nary 表达式,该表达式使用运算符 N-1 次将所有表达式连接为一个表达式。
因此,对于 4 个表达式的集合{e1, e2, e3, e4}
和运算符AND
我会得到:e1 AND e2 AND e3 AND e4
.
由于运算符相同,因此我可以通过简单地将 N-1 BinaryExpressions
链接在一起来创建该表达式
Expression result = (((e1 AND e2) AND e3) AND e4);
但我认为可能有一种更简单的方法可以做到这一点。基本上是这样的
Expression.NNary(ExpressionType operator, IEnumerable<Expression> expressions)
是否已经实现了这样的事情,或者我必须用BinaryExpressions
来做?
您描述的是 reduce 函数,在 LINQ 中称为 Aggregate
。它将一系列值减少为单个值,如下所示:
int[] numbers = { 1, 2, 3, 4 };
int sum = numbers.Aggregate((acc, current) => acc + current, 0); // 10
如何将acc
和current
结合起来取决于您。
框架中没有实现任何内容,您必须使用二进制表达式并在循环中连接它们。