扩展方法Take()和Skip()等的分区操作可用于分页,例如显示5×5 个赛手。
在下面的LINQ 查询中,扩展方法Take()和Skip()添加到查询的最后。
Skip()方法先忽略根据页面的大小和实际的页数计算出的项数,
再使用方法Take()根据页面的大小提取一定数量的项:
private static void Partitioning() { int pageSize = 5; //页尺寸 int numberPages = (int)Math.Ceiling(Formula1.GetChampions().Count() / (double)pageSize); //获得页数 for (int page = 0; page < numberPages; page++) {//page 是当前页 Console.WriteLine("Page {0}", page); var racers = (from r in Formula1.GetChampions() orderby r.LastName select r.FirstName + " " + r.LastName).Skip(page * pageSize).Take(pageSize);
//注意括号后的调用代表鲜活的结果集再调用这个扩展方法Skip跳过多少条,之后Take取出多少条结果 foreach (var name in racers) { Console.WriteLine(name); } Console.WriteLine(); } }
分页在Windows 或Web 应用程序中非常有用,可以只给用户显示一部分数据。
提示:这个分页机制的一个要点是,因为查询会在每个页面上执行,所以改变底层的数据会影响结果。在
继续执行分页操作时,会显示新对象。根据不同的情况,这对于应用程序而言可能是一个优点。如果这个操作
是不需要的,就可以只对原来的数据源分页,然后使用映射到原数据上的高速缓存。
使用TakeWhile()和SkipWhile()方法,还可以传送一个谓词,根据谓词的结果提取或跳过某些项。
冯瑞涛
分类:
[01] .Net X
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?