我有以下代码:
public List<anEntity> Get(int page, int pagesize, Func<anEntity, IComparable> orderby)
{
using (var ctx = new MyContext())
{
return ctx.anEntity.OrderBy(orderby).Skip(pagesize * page).Take(pagesize).ToList();
}
}
当我检查我的数据库配置文件(SqlServer 2012)时,我可以看到一个可怕的全表扫描,没有任何“TOP”子句。
有趣的部分:
如果我做类似的事情但指定一个具体的 orderby:
return ctx.anEntity.OrderBy(x => x.aField).Skip(pagesize * page).Take(pagesize).ToList();
配置文件显示了一个漂亮的“TOP”子句。
我想避免有很多方法,每个“orderby”可能性都有一个。任何提示将不胜感激。