LINQ 分區(qū)運(yùn)算符 Skip & SkipWhile

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

方法描述
Skip

從序列中的第一個元素開始,將元素跳到指定的位置。

SkipWhile

根據(jù)條件跳過元素,直到元素不滿足條件為止。如果第一個元素本身不滿足條件,那么它將跳過0個元素并返回序列中的所有元素。

Take

從序列中的第一個元素開始,將元素帶到指定的位置。

TakeWhile

從第一個元素返回元素,直到元素不滿足條件為止。如果第一個元素本身不滿足條件,則返回一個空集合。

Skip

Skip()方法從第一個元素開始跳過指定數(shù)量的元素,并返回其余元素。

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 運(yùn)算符

C # 查詢語法不支持 Skip & SkipWhile 運(yùn)算符。但是,您可以對查詢變量使用 Skip/SkipWhile 方法,或者將整個查詢包裝到括號中,然后調(diào)用 Skip/SkipWhile。

下面的示例演示了查詢語法中的skip運(yùn)算符-VB.NET版

Dim skipResult = From s In studentList
                 Skip 3
                 Select s

SkipWhile

顧名思義,LINQ中的SkipWhile()擴(kuò)展方法將跳過集合中的元素,直到指定的條件為true。一旦任何元素的指定條件變?yōu)閒alse,它將返回一個包含所有剩余元素的新集合。

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

在下面的示例中,SkipWhile()方法跳過所有元素,直到找到長度等于或大于4個字符的字符串。

示例:在C#中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

在上面的示例中,由于前兩個元素的長度小于3,所以 SkipWhile() 跳過前兩個元素,并找到長度等于或大于4的第三個元素。一旦找到長度等于或大于4個字符的任何元素,它將不跳過其他任何元素元素,即使小于4個字符。

現(xiàn)在,看以下示例,該示例中,其中 SkipWhile ()不會跳過任何元素,因?yàn)榈谝粋€元素的指定條件為 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的第二個重載傳遞每個元素的索引??聪旅娴膶?shí)例

示例:在C#中使用索引的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表達(dá)式包括元素和元素的索引作為參數(shù)。它會跳過所有元素,直到字符串元素的長度大于其索引。

查詢語法中的SkipWhile運(yùn)算符

C# 查詢語法不支持 Skip & SkipWhile 運(yùn)算符。但是,您可以對查詢變量使用 Skip/SkipWhile 方法,或者將整個查詢包裝到括號中,然后調(diào)用 Skip/SkipWhile ()。

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