Linq中的SkipWhile
1、含義
(1)、對數據源進行枚舉,從第一個枚舉得到的元素開始,調用客戶端的predicate
(2)、如果返回true,則跳過該元素,繼續進行枚舉操作.
(3)、但是,如果一旦predicate返回為false,則該元素以后的所有元素,都不會再調用predicate,而全部枚舉給客戶端.
2、實例
int[] grades = { 59, 82, 70, 56, 92, 98, 85 };
IEnumerable<int> lowerGrades =
grades
.OrderByDescending(grade => grade)
.SkipWhile(grade => grade >= 80);
Console.WriteLine("All grades below 80:");
foreach (int grade in lowerGrades)
{
Console.WriteLine(grade);
}
/**//*
This code produces the following output:
All grades below 80:
70
59
56
*/二、Linq中的TakeWhile
1、含義
(1)、對數據源進行枚舉,從第一個枚舉得到的元素開始,調用客戶端傳入的predicate( c.Name == ""woodyN")
(2)、如果這個predicate委托返回true的話,則將該元素作為Current元素返回給客戶端,并且,繼續進行相同的枚舉,判斷操作.
(3)、但是,一旦predicate返回false的話,MoveNext()方法將會返回false,枚舉就此打住,忽略剩下的所有元素.
2、實例
string[] fruits = { "apple", "banana", "mango", "orange",
"passionfruit", "grape" };
IEnumerable<string> query =
fruits.TakeWhile(fruit => String.Compare("orange", fruit, true) != 0);
foreach (string fruit in query)
{
Console.WriteLine(fruit);
}
/**//*
This code produces the following output:
apple
banana
mango
*/參考資料:Linq中的TakeWhile和SkipWhile http://www.studyofnet.com/news/872.html
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。