.NET(C#) LINQ Skip和SkipWhile的使用

Linq是Language Integrated Query的简称,它是微软在.NET Framework 3.5里面新加入的特性,用以简化查询查询操作。本文主要介绍.NET(C#) 中Linq的Skip和SkipWhile操作符。

1、Skip操作符

Skip操作符用于从输入序列中跳过指定数量的元素,返回由序列中剩余的元素所组成的新序列。

例如,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            List<People> pList = new List<People>();
            People p1 = new People(1, "C", 4);
            People p2 = new People(1, "Java", 7);
            People p3 = new People(1, "Python", 11);
            People p4 = new People(1, "Linux", 15);
            pList.Add(p1);
            pList.Add(p2);
            pList.Add(p3);
            pList.Add(p4);
            IEnumerable<People> newList = pList.Skip(2);    //跳过前两个
            foreach (var item in newList)
            {
                Console.WriteLine(item.Name);              
            }
            Console.ReadKey();
        }
    }
    public class People
    {
        public People(int id, string name, int age)
        {
            this.Id = id;
            this.Name = name;
            this.Age = age;
        }
        public int Id
        {
            get;
            set;
        }
        public string Name
        {
            get;
            set;
        }
        public int Age
        {
            get;
            set;
        }
    }
}

2、SkipWhile操作符

SkipWhile操作符用于从输入序列中跳过满足一定条件指定数量的元素,与TakeWhile操作符类似。如果条件满足就一直跳过,直到不满足后 就取剩下的所有元素(后面的不会再判断)。

例如,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            List<People> pList = new List<People>();
            People p1 = new People(1, "C", 6);
            People p2 = new People(1, "C#", 11);
            People p3 = new People(1, "Java", 8);
            People p4 = new People(1, "Python", 15);
            pList.Add(p1);
            pList.Add(p2);
            pList.Add(p3);
            pList.Add(p4);
            IEnumerable<People> newList =  pList.SkipWhile(p => p.Age < 11);   
            foreach (var item in newList)  
            {
                Console.WriteLine(item.Name); 
            }
            Console.WriteLine();
            IEnumerable<People> newList1 =  pList.SkipWhile((p, i) => p.Age<12 && i < 2);
            foreach (People p in newList1)
            {
                Console.WriteLine(p.Name); 
            }
            Console.ReadKey();
        }
    }
    public class People
    {
        public People(int id, string name, int age)
        {
            this.Id = id;
            this.Name = name;
            this.Age = age;
        }
        public int Id
        {
            get;
            set;
        }
        public string Name
        {
            get;
            set;
        }
        public int Age
        {
            get;
            set;
        }
    }
}

推荐阅读
cjavapy编程之路首页