zoukankan      html  css  js  c++  java
  • LINQ 标准的查询操作符 分区 Take 、Skip 、TakeWhile 、SkipWhile

    扩展方法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()方法,还可以传送一个谓词,根据谓词的结果提取或跳过某些项。

    image

    冯瑞涛
  • 相关阅读:
    e552. 取Applet的参数
    e551. 精简的Applet
    e558. 在Applet中多图片交互显示
    e1087. try/catch语句
    e1086. if/else语句
    e1087. 用For循环做数组的遍历
    e1084. 捕获错误和异常
    Zookeeper 应用程序
    Zookeeper API
    Java并发编程:volatile关键字解析
  • 原文地址:https://www.cnblogs.com/finehappy/p/1578822.html
Copyright © 2011-2022 走看看