C# 返回数字的两个表达式之和
我有一个简单定义如下的列表和查询:C# 返回数字的两个表达式之和,c#,linq,expression,iqueryable,C#,Linq,Expression,Iqueryable,我有一个简单定义如下的列表和查询: var list = new List<int>(); for (var i = 0; i < 4; i++) { list.Add(i); } var query = list.AsQueryable(); 第三种力量是这样的: private static Expression<Func<int, int>> Third() { return i => i * i * i; } 我希望
var list = new List<int>();
for (var i = 0; i < 4; i++)
{
list.Add(i);
}
var query = list.AsQueryable();
第三种力量是这样的:
private static Expression<Func<int, int>> Third()
{
return i => i * i * i;
}
我希望结果是好的
0
2
12
36
有没有一种方法可以轻松做到这一点,或者我应该用其他方法
请记住,这些方法简化为强调,以便于定义问题
另外,我之所以使用表达式,是因为这是Linq to entities问题的一个过于简化的示例,我知道我只能使用截至的
IQueryable
。如果需要表达式树,请在Square().Body
和Third().Body
上使用静态方法
如果您只需要委托,请使用
x=>Square().Compile()(x)+Third().Compile()(x)
,它应该被称为Cube()
,而不是Third()
。显然,我忘记了将它用于linq to实体;(据我所知,我必须使用表达式。目前我觉得过于简单化这个问题很愚蠢。或者也许我错了,你可以不用表达式来完成任务?如果你想让它成为一个实体查询,你确实需要表达式,这改变了答案的工作方式。我认为(还显示了特定的布尔大小写)。如果不是,则搜索其他“[C#]表达式组合”首先提问并解释为什么会有不同。你还需要重写参数。@SLaks我同意,我的答案中缺少一些细节。他需要从头开始建立一个全新的表达式树,但表达式。添加是基本要素。在SwapVisitor
的帮助下,我成功地做到了。耶!谢谢非常感谢:)
var result = query.Select(Square() + Third()).ToList();
0
2
12
36