[英]Select a range with Entity Framework
我在尝试最大化具有页面的列表视图的性能时遇到问题。
我希望实体框架执行 select 语句,但只返回结果范围(范围 = listview 一页的项目)。
我搜索了谷歌,但没有找到任何结果。 我只发现我可以做 a.ToList().GetRange(start index, end index),但是所有项目都会加载到 memory 中,这就是我想避免的......
有人可以告诉我这是否可以做到吗? (我不想使用存储过程或视图或类似的东西,因为我们的列表视图必须是可重用的......)
谢谢!
您应该能够使用.Take(x).ToList()
编辑:对不起,试试.Skip(startPosition).Take(numberOfItems).ToList()
如果您不使用延迟加载,请确保在应用过滤器时在 Load() 之前使用 Query(),以避免在应用过滤器之前加载整个集合:
context.Entry(blog)
.Collection(b => b.Posts)
.Query()
.Skip(startPosition)
.Take(numberOfItems)
.Load()
.ToList();
使用 Query 方法时,通常最好关闭导航属性的延迟加载。 这是因为否则整个集合可能会在执行过滤查询之前或之后由延迟加载机制自动加载。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.