【发布时间】:2014-07-30 11:53:57
【问题描述】:
我有一个列表和一个简单定义如下的查询:
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-to-entities 问题的过度简化示例,并且我知道我只能使用 IQueryable 和 this topic。
【问题讨论】:
-
应该叫
Cube(),而不是Third()。 -
显然我忘了包括我会将它用于 linq to 实体 ;( 根据blogs.msdn.com/b/meek/archive/2008/05/02/… 我必须使用表达式。目前我为过度简化问题而感到愚蠢。或者也许我错了,你可以在没有表情的情况下完成任务吗?
-
如果你想让它成为一个实体查询,你确实需要表达式,这会改变答案的工作方式。
-
我认为stackoverflow.com/questions/457316/… 涵盖了组合(也显示了特定的布尔大小写)。如果不是,请先搜索其他“[C#] 表达式组合”问题并评论为什么不同。
标签: c# linq expression iqueryable