我有以下代码:
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”子句.
有趣的部分:
如果我做类似的事情,但指定一个具体的顺序:
return ctx.anEntity.OrderBy(x => x.aField).Skip(pagesize * page).Take(pagesize).ToList();
该资料显示了一个美丽的“TOP”子句.
我想避免有很多方法,一种是针对每个“orderby”的可能性.任何暗示都将非常感激.