Lambda overload for Skip/Take Missing
本文关键字:Take Missing Skip overload for Lambda | 更新日期: 2023-09-27 18:14:37
我正在运行一些非常简单的测试代码来查看linq查询中常量的效果,我在定位过载时遇到了麻烦…
这篇MSDN文章特别提到了skip/take的lambda重载,但是我似乎找不到它的位置。
选自《实体框架4、5和6的性能考虑》第4.2节:
"在分页时要特别注意Skip和Take的使用。在EF6中,这些方法具有lambda重载,这有效地使缓存的查询计划可重用,因为EF可以捕获传递给这些方法的变量并将其转换为sqlparameter。"
之后是下面的代码示例:
var customers = context.Customers.OrderBy(c => c.LastName);
for (var i = 0; i < count; ++i)
{
var currentCustomer = customers.Skip(() => i).FirstOrDefault();
ProcessCustomer(currentCustomer);
}
我的测试代码:
for(int i = 0; i<100; i++)
{
var result = dc.Products
//.Select(p => p.Name)
.OrderBy(p => p.Name)
.Skip(() => i)
.ToList();
}
错误:无法将lambda表达式转换为"int"类型,因为它不是委托类型
我在阅读失败,或者有一个包括缺失的地方与重载扩展方法?
您正在寻找的扩展方法是" QueryableExtensions.Skip
"。它在System.Data.Entity
命名空间中,在EntityFramework程序集中。