Linq中Skip和Take用法(TakeWhile和SkipWhile用法)

首先解释一下Skip和Take都用来干嘛的。

1.Skip跳过指定数量的项,并获取剩余的项

2.Take提取制定数量的项

3.TakeWhile根据指定条件提出数据

4.SkipWhile根据指定条件跳过数据


实例如下:

/// 
/// Take用法
/// 
public void Linq1()
{
    int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
    var first3Numbers = numbers.Take(3); //从第一个元素开始,获取三个

    Console.WriteLine("First 3 numbers:");

    foreach (var n in first3Numbers)
    {
        Console.WriteLine(n);
    }
}

结果
5
4
1

/// 
/// TakeWhile用法
/// 
public void Linq2()
{
    int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

    //在这里需要注意.使用TakeWhile获取小于6的元素,是从第一个元素开始,
    //一直到不满足其小于6这个条件为止.也就是执行到和9这个元素比较后,就结束比较了
    //可以想象一下执行过程.
    //5<6=true;4<6=true;1<6=true;3<6=true
    //9<6=false;   这里就停止继续比较了 
    var firstNumbersLessThan6 = numbers.TakeWhile(n => n < 6);

    Console.WriteLine("First numbers less than 6:");

    foreach (var n in firstNumbersLessThan6)
    {
        Console.WriteLine(n);
    }
}

结果
5
4
1
3
/// 
/// Skip用法
/// 
public void Linq3()
{
    int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
    var allButFirst4Numbers = numbers.Skip(4);  //跳过前四个元素,获取后面所有的元素

    Console.WriteLine("All but first 4 numbers:");

    foreach (var n in allButFirst4Numbers)
    {
        Console.WriteLine(n);
    }
}

结果
9
8
6
7
2
0
/// 
/// SkipWhile用法
/// 
public void Linq4()
{
    int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

    //这里和TakeWhiel又有些不一样。
    var allButFirst3Numbers = numbers.SkipWhile(n => n < 6);

    Console.WriteLine("结果:");
    foreach (var n in allButFirst3Numbers)
    {
        Console.WriteLine(n);
    }

}

结果
9
8
6
7
2
0




你可能感兴趣的:(Linq)