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

时间:2014-06-09 20:49:21

标签: c# linq expression iqueryable

我有一个列表和一个简单定义的查询:

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

有没有办法轻松实现,或者我应该采取其他方式?

P.S。请记住,这些方法简化为压力,以便于定义问题。

P.S。我正在使用表达式,因为这是Linq-to-entities问题的过度简化示例,我知道我只能使用this topicIQueryable

1 个答案:

答案 0 :(得分:1)

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

如果您只需要代表,请使用x => Square().Compile()(x) + Third().Compile()(x)