LINQ入门笔记----LINQ To Object<Take(),TakeWhile(),Skip(),SkipWhile()>

Take()方法

        Take()从序列的开头返回指定数量的连续元素.

        方法有两个参数:

    • source数据源;
    • count要返回的元素数量.

        示例:

            

    int[] groupInts = new[] {65, 84, 74, 89, 51, 54, 24, 32, 48, 7, 12, 58, 64};

 

    var lists = groupInts.OrderByDescending(a => a).Take(5);//降序排序取前五

 

    Console.WriteLine($"排名前五的是:");

 

    foreach (var list in lists)

    {

         Console.Write($"{list},");

    }

 

result:89.84,74,65,64,

 

 

TakeWhile()方法

        TakeWhile()当指定的条件为真时,返回序列中的元素;

        方法有两个参数:

    • IEnumerable<TSource>参数表示数据源;
    • Func<TSource, Boolean>

        示例:

 

 

    int[] Ints = new int[] {225,78,32,45,87,74,96,57,28,77};

 

    IEnumerable<int> items;

    

    items = Ints.TakeWhile(ints => ints > 50);

 

    foreach (var variable in items)

    {

        Console.Write(variable+" ");

    }

 

result:225 78 

 

 

        这里要说明的一点:TakeWhile()方法虽然是获取序列中满足条件的元素,但是,存在的一个坑就是这个返回元素是有一个机制的:如果当前的元素不满足条件那么读取就会停止.换言之,当我们读到32时,它不满足我们的条件,那么后面的元素将不会被读取,所以,鄙人认为,此方法若用于读取范围数值需要与OrderBy联用.

 

Skip()方法

        Skip()跳过序列中指定数量的元素,返回剩余的元素.

        参数:

    • Source,数据源;
    • Count,跳过的元素个数

        示例:

 

    int[] Ints = new int[] {225,78,32,45,87,74,96,57,28,77};

 

    var items = Ints.OrderByDescending(n => n).Skip(3);//降序排序后跳过3个元素将剩余元素返回

 

    foreach( var variable in items)

        {

            Console.WriteLine($"{variable},");

        }

 

resault:75,69,68,54,54,48,42,36,12,11,

 

 

SkipWhile()方法

        SkipWhile()跳过满足条件的元素,将剩下的元素返.

    • IEnumerable<TSource>参数表示数据源;
    • Func<TSource, Boolean>

        实例:

 

    int[] Ints = new int[] {225,78,32,45,87,74,96,57,28,77};

    

    var items = Ints.SkipWhile(n => n % 2 != 0);

 

    foreach( var variable in items)

    {

        Console.Write($"{variable},");

    }

 

resault:84,78,75,69,68,84,48,42,36,12,11, 

 

        这里和TakeWhile()一样,当结果为false时,停止跳过,直接返回剩下的所有元素.

posted @ 2020-04-05 02:07  溺水的鲨鱼  阅读(149)  评论(0编辑  收藏  举报