LINQ 分區(qū)運(yùn)算符 Take & TakeWhile

分區(qū)運(yùn)算符將序列(集合)分為兩部分,并返回其中一部分。

Take

Take()擴(kuò)展方法返回從第一個(gè)元素開始的指定數(shù)量的元素。

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 & takedwhile 運(yùn)算符。但是,您可以對(duì)查詢變量使用 Take/takedwhile 方法,或者將整個(gè)查詢包裝到括號(hào)中,然后調(diào)用 Take/takedwhile ()。

Dim takeResult = From s In studentList
                 Take 3
                 Select s

TakeWhile

TakeWhile()擴(kuò)展方法返回給定集合中的元素,直到指定的條件為true。如果第一個(gè)元素本身不滿足條件,則返回一個(gè)空集合。

TakeWhile方法有兩個(gè)重載方法。一種方法接受Func<TSource, bool>類型的謂詞,另一種重載方法接受Func<TSource, int, bool>通過元素索引的謂詞類型。

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

示例:C#中的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()返回僅包含第一元素,因?yàn)榈诙址夭粷M足該條件。

TakeWhile 還在謂詞函數(shù)中傳遞當(dāng)前元素的索引。下面的 TakeWhile 方法示例接受元素,直到字符串元素的長度大于它的索引

示例:C#中的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
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清