【发布时间】:2010-07-02 11:09:10
【问题描述】:
我有以下 lambda 表达式:
IEnumerable<Order> query
= _ordersRepository.GetAllByFilter(
o =>
o.OrderStatus.OrderByDescending(os => os.Status.Date).First()
.Status.StatusType.DisplayName != "Completed"
||
o.OrderStatus.OrderByDescending(os => os.Status.Date).First()
.Status.Date > sinceDate
).OrderBy(o => o.DueDate);
如您所见,我必须在主查询中对集合进行两次排序(总共 3 次)才能执行我的 OR 查询。
1) 查询优化器是否足够聪明,可以有效地处理这个问题?
2) 如果不是,我如何将这个表达式重写为仅按一次排序,但保持 lambda 语法?
链接到this previous question,如果上面的代码不清楚,它会更详细地解释查询。
【问题讨论】:
标签: performance linq-to-sql optimization lambda query-optimization