猿教程 Logo

Linq分区操作符:Skip&SkipWhile

分区操作符将序列(集合)拆分为两部分并返回其中一个部分。

方法描述
SkipSkip从序列中的第一个元素开始的指定位置的元素。
SkipWhile根据条件跳过元素,直到元素不满足条件。 如果第一个元素本身不满足条件,则跳过0个元素并返回序列中的所有元素。
Take从元素序列中的第一个元素开始,将元素移动到指定的位置。
TakeWhile从第一个元素返回元素,直到元素不满足条件。 如果第一个元素本身不满足条件,那么返回一个空集合。

Skip:

Skip()方法从第一个元素开始跳过指定数量的元素,并返回其余元素。

相关实例:

IList<string> strList = new List<string>(){ "One", "Two", "Three", "Four", "Five" };

var newList = strList.Skip(2);

foreach(var str in newList)
    Console.WriteLine(str);

运行结果:

Three 
Four 
Five

查询语法中的Skip运算符:

在C#查询语法中不支持Skip&SkipWhile运算符。 但是,您可以对查询变量使用Skip / SkipWhile方法,或将整个查询包含在括号中,然后调用Skip / SkipWhile。

以下示例演示了查询语法中的skip运算符 - VB.NET

相关实例:

Dim skipResult = From s In studentList
                 Skip 3
                 Select s

SkipWhile:

顾名思义,LINQ中的SkipWhile()扩展方法会跳过元素集合中的元素,直到指定的条件为真。 当指定条件对任何元素变为false时,它返回一个包含所有其余元素的新集合。

SkipWhile()方法有两个重载方法。 一个方法接受Func <TSource,bool>类型,另一个重载方法的谓词接受传递元素索引的谓词Func <TSource,int,bool>类型。

在以下示例中,SkipWhile()方法跳过所有元素,直到找到长度等于或大于4个字符的字符串。

相关实例:

IList<string> strList = new List<string>() { 
                                            "One", 
                                            "Two", 
                                            "Three", 
                                            "Four", 
                                            "Five", 
                                            "Six"  };

var resultList = strList.SkipWhile(s => s.Length < 4);

foreach(string str in resultList)
        Console.WriteLine(str);

运行结果:

Three 
Four 
Five 
Six

在上面的例子中,SkipWhile()跳过前两个元素,因为它们的长度小于3,并找到长度等于或大于4的第三个元素。一旦找到长度等于或大于4个字符的任何元素,它将不会 跳过任何其他元素,即使它们小于4个字符。

现在,参考以下示例,其中SkipWhile()不跳过任何元素,因为第一个元素的指定条件为false。

相关实例:

IList<string> strList = new List<string>() { 
                                            "Three", 
                                            "One", 
                                            "Two", 
                                            "Four", 
                                            "Five", 
                                            "Six"  };

var resultList = strList.SkipWhile(s => s.Length < 4);

foreach(string str in resultList)
        Console.WriteLine(str);

运行结果:

Three 
One 
Two 
Four 
Five 
Six

SkipWhile的第二个重载传递每个元素的索引。 请参考以下示例。

相关实例:

IList<string> strList = new List<string>() { 
                                            "One", 
                                            "Two", 
                                            "Three", 
                                            "Four", 
                                            "Five", 
                                            "Six"  };

var result = strList.SkipWhile((s, i) => s.Length > i);

foreach(string str in result)
    Console.WriteLine(str);

运行结果:

Five 
Six

在上面的例子中,lambda表达式包含作为参数的元素的元素和索引。 它跳过所有的元素,直到一个字符串元素的长度大于它的索引。


查询语法中的Skip / SkipWhile运算符:

在C#查询语法中不支持Skip / SkipWhile作符。 但是,您可以对查询变量使用Skip / SkipWhile方法,或将整个查询包含在括号中,然后调用Skip / SkipWhile()。

相关实例:

Dim strList = New List(Of string) From {
                                        "One", 
                                        "Two", 
                                        "Three", 
                                        "Four", 
                                        "Five", 
                                        "Six"  }

Dim skipWhileResult = From s In studentList
                      Skip While s.Length < 4
                      Select s

运行结果:

Three 
Four 
Five 
Six


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Linq/linq-partitioning-operators-skip-skipwhile.html