【发布时间】:2015-02-03 04:49:14
【问题描述】:
我需要在 LINQ to Entities 查询之上动态替换一个聚合函数以在数据库中执行操作,同时不要硬编码我使用什么函数,例如在这样的查询中将Average() 替换为Max() 或Min():
IQueryable<Order> orders = ordersRepository.GetAll();
var q = from o in orders
group o by o.OrderDate into g
select new
{
OrderDate = g.Key,
AggregatedAmount = g.AsQueryable()
.Average(x => x.Amount)
};
我坚持将Queryable.Average() 转换为表达式树,该树可以放入查询中并成功转换为 SQL。
【问题讨论】:
-
你能提供更多关于你到目前为止所尝试的细节吗?有一个小型库允许您将任意表达式插入到查询中。我现在不记得它的名字了。
-
@usr:这是我的问题。我不知道如何接近,从哪里开始。谷歌充满了 where 子句的谓词构建器,毫无疑问,这很容易。但似乎没有人尝试编写选择器。
标签: c# linq entity-framework linq-to-entities aggregate-functions