我有一个列表和一个简单定义的查询:
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 topic的IQueryable
。
答案 0 :(得分:1)
如果您需要表达式树,请在Square().Body
和Third().Body
上使用Expression.Add
静态方法。
如果您只需要代表,请使用x => Square().Compile()(x) + Third().Compile()(x)
。