两个返回数字的表达式的和

本文关键字:数字 表达式 返回 两个 | 更新日期: 2023-09-27 18:08:03

我有一个列表和一个查询,定义如下:

var list = new List<int>();
for (var i = 0; i < 4; i++)
{
    list.Add(i);
}
var query = list.AsQueryable();

现在我有一个Expression,它返回数字的平方:

private static Expression<Func<int, int>> Square()
{
    return i => i * i;
}

和三次方如下:

private static Expression<Func<int, int>> Third()
{
    return i => i * i * i;
}

我想要的是能够在Select表达式中选择这些的总和,代码类似于以下伪代码:

var result = query.Select(Square() + Third()).ToList();

我期望结果是

0
2
12
36

是否有一种方法可以轻松实现,或者我应该用其他方法?

注:请记住,为了便于定义问题,方法被简化了。

注:我使用表达式,因为这是linq到实体问题的过于简化的例子,我明白我只能使用IQueryable作为这个主题。

两个返回数字的表达式的和

如果需要表达式树,在Square().BodyThird().Body上使用Expression.Add静态方法

如果你只需要委托,使用x => Square().Compile()(x) + Third().Compile()(x)