猿教程 Logo

Linq分区操作符:Take & TakeWhile

阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效:去购买

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

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

Take:

Take()扩展方法返回从第一个元素开始的指定数量的元素。

相关实例:

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

var newList = strList.Take(2);

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

运行结果:

One 
Two

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

VB.NET相关实例:

Dim takeResult = From s In studentList
                 Take 3
                 Select s

TakeWhile:

TakeShile()扩展方法返回给定集合中的元素,直到指定的条件为true。 如果第一个元素本身不满足条件,那么返回一个空集合。

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

在下面的示例中,TakeWhile()方法返回一个包含所有元素的新集合,直到找到一个长度小于4个字符的字符串。

相关实例:

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

var result = strList.TakeWhile(s => s.Length > 4);

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

运行结果:

Three

在上面的例子中,TakeWhile()只包含第一个元素,因为第二个字符串元素不满足条件。

TakeWhile也传递谓词函数中当前元素的索引。 下面的TakeWhile方法的例子接受元素,直到字符串元素的长度大于它的索引

相关实例:

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

var resultList = strList.TakeWhile((s, i) => s.Length > i);

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

运行结果:

One 
Two 
Three 
Four
阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效: 去购买


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