Linq学习笔记延迟操作符(分区操作符)

3.分区操作符

Take

作用:可以返回来自输入序列中指定数量的元素,并从输入序列的第一个元素开始计数。

简单的说就是获取序列中的前几项

原型

    public static IEnumerable<T> Take<T>(
        this IEnumerable<T> source,int count);

例子

    static void Main(string[] args)
    {
        string[] items = { "Hello World", "Welcome to MVC", "Linq to Sql"};

        var result = items.Take<string>(2);
        //显示查询结果
         foreach (var item in result)
        {
            Console.WriteLine(item);
        }

        Console.Read();
    }

结果

linq_jieguo7

TakeWhile

作用:可以在指定的一些条件为True时从输入序列中提取元素,从序列中的第一个

元素开始,其他的输入元素被跳过。

原型

    public static IEnumerable<T> TakeWhile<T>(
        this IEnumerable<T> source,
        Func<T, bool> predicate);
    public static IEnumerable<T> TakeWhile<T>(
        this IEnumerable<T> source,
        Func<T, int, bool> predicate);

例子

    static void Main(string[] args)
    {
        string[] items = { "Hello World", "Welcome to MVC", "Linq to Sql"};

        var result = items.TakeWhile<string>(c => c.IndexOf("W")>=0);
        //显示查询结果
         foreach (var item in result)
        {
            Console.WriteLine(item);
        }

        Console.Read();
    }

结果

lint_jieguo8

    static void Main(string[] args)
    {
        string[] items = { "Hello World", "Welcome to MVC", "Linq to Sql"};

        var result = items.TakeWhile<string>((c, i) => c.IndexOf("W")>=0 && i < 1);
        //显示查询结果
         foreach (var item in result)
        {
            Console.WriteLine(item);
        }

        Console.Read();
    }

结果

lint_jieguo9

Skip

作用:将跳过序列中从该序列的第一个元素开始的制定数量的元素,并取出其余的元素

原型

    public static IEnumerable<T> Skip<T>(
        this IEnumerable<T> source, 
        int count);

例子

   static void Main(string[] args)
   {
       string[] items = { "Hello World", "Welcome to MVC", "Linq to Sql"};

       var result = items.Skip(2);
       //显示查询结果
        foreach (var item in result)
       {
           Console.WriteLine(item);
       }

       Console.Read();
   }

结果

linq_jieguo_skip

SkipWhile

作用:操作一个输入序列,在知道条件为true时,跳过一些元素,提取剩余的元素。

原型

    public static IEnumerable<T> SkipWhile<T>(
        this IEnumerable<T> source, 
        Func<T, bool> predicate);
    public static IEnumerable<T> SkipWhile<T>(
        this IEnumerable<T> source, 
        Func<T, int, bool> predicate);

例子

    static void Main(string[] args)
    {
        string[] items = { "Hello World", "Welcome to MVC", "Linq to Sql"};

        var result = items.SkipWhile(c=>c.StartsWith("H"));
        //显示查询结果
         foreach (var item in result)
        {
            Console.WriteLine(item);
        }

        Console.Read();
    }

结果

linq_jieguo_skipwhile_1

例子

    static void Main(string[] args)
    {
        string[] items = { "Hello World", "Welcome to MVC", "Linq to Sql"};

        var result = items.SkipWhile((c,i)=>c.IndexOf("l") > 0 && i < 2);
        //显示查询结果
         foreach (var item in result)
        {
            Console.WriteLine(item);
        }

        Console.Read();
    }

结果

linq_jieguo_skipwhile_2

原文地址:https://www.cnblogs.com/yangxi1081/p/2487629.html