ICollection<City> a = cityService.Get("0001I");
我想做的是能够依赖于一个参数只返回以下范围:
records 1-100 passing in 0 as an argument to a LINQ expression records 101-200 passing in 100 as an argument to a LINQ expression records 201-300 passing in 200 as an argument to a LINQ expression records 301-400 passing in 300 as an argument to a LINQ expression etc
解决方法
选项1
从表存储中下载所有数据(通过使用ToList,请参阅abatishchev的答案)并在此完整列表上执行Skip and Take方法.在您的问题中,您正在谈论500条记录.如果记录数量没有增长太多,这个解决方案对你来说应该没问题,只需要确保所有记录都有相同的分区键.
如果数据增长,你仍然可以使用这种方法,但我建议你评估一个缓存解决方案来存储所有记录,而不是一遍又一遍地从表存储中加载它们(这将提高性能,但不要指望它能够工作有非常大量的数据).使用以下命令在Windows Azure中进行缓存:
> Windows Azure Caching (Preview)
> Windows Azure Shared Caching
选项2
CloudTableQuery类允许您查询数据,但更重要的是接收延续令牌以构建分页实现.这允许您检测是否可以查询更多数据,Scott的博客上的分页示例(请参阅nemensv的评论)使用此.
有关延续令牌的更多信息,我建议您查看Jim的博客文章:Azure@home Part 7: Asynchronous Table Storage Pagination.通过使用延续令牌,您只下载当前页面的数据,这意味着即使您有数百万条记录,它也能正常工作.但是你必须知道使用延续令牌的缺点:
>这不适用于开箱即用的Skip方法,因此它可能不适合您.>没有页面’数字’,因为你只知道是否有更多的数据(不是多少)>无法计算所有记录
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。