日期:2014-05-20  浏览次数:20845 次

关于Linq延迟加载和分页
  使用LInq做了一个分页,是通过显示层调用业务层完成的,但是业务层并没有做分页的函数,代码直接这样写:
IEnumble<IBLLClass> result = BLLQuery.select().skip(i*pageSize).take(pageSize);
BLLQuery.select就是调用 context的select方法。
请问这种方式查询会不会查出所有的数据再分页?
------最佳解决方案--------------------
引用:
那如果这样呢?
    IEnumble<IBLLClass> result = BLLQuery.select();
 IEnumerble<IBLLClass> pageResult=result.skit().take();
result中是查出所有数据,pageResult是分页过的数据,我没办法再调整结构,很担心数据会一次查出放到result中,再在pageResult中分页会影……

都不会,只有ToList、ToArray等,还有First、Count等会造成立即执行,即先查出所有数据
------其他解决方案--------------------
skip(i*pageSize).take(pageSize);

不会加载所有数据 
------其他解决方案--------------------
放心不会。
------其他解决方案--------------------
额,我弄错了,确实不会
------其他解决方案--------------------
你可以看下生成的SQL
------其他解决方案--------------------
围观你的结贴率
------其他解决方案--------------------
是的,用IQueryable<IBLLClass>就不会了
------其他解决方案--------------------
那如果这样呢?
    IEnumble<IBLLClass> result = BLLQuery.select();
 IEnumerble<IBLLClass> pageResult=result.skit().take();
result中是查出所有数据,pageResult是分页过的数据,我没办法再调整结构,很担心数据会一次查出放到result中,再在pageResult中分页会影响数据的访问速度。

PS:我的结贴率怎么超过100%的,我也不知道,反正我两天内都会结贴。
------其他解决方案--------------------
我再试试吧,谢谢各位。