The TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) method tests each element of source by using predicate and yields the element if the result is true. Enumeration stops when the predicate function returns false for an element or when sourcecontains no more elements.
TakeWhile 方法
從集合開頭提取元素春叫,這個函數(shù)的定義與Skip()類似暂殖。
int[] myAry = {1,2,3,4,5,6,7,8,9,0};
var q1 = myAry.Take(3);//返回前面三個元素。里面的參數(shù)是指要返回元素的數(shù)量呛每。
var q2 = myAry.TakeWhile((num,index)=>index<4);
//返回索引小于3的元素,這里可以有1個或2個參數(shù)洋腮,第一個參數(shù)為元素的值手形,第二個參數(shù)是元素的索引啥供。
特別注意叁幢,TakeWhile()從集合的第一個元素開始,使用參數(shù)進行計算(index<4),如果返回true提取并繼續(xù)判斷下一個元素鳞骤。如果返回false則停止判斷,返回集合中被提取的元素豫尽。
所以如果上面是這樣的myAry.TakeWhile((num,index)=>index>4);則返回0個元素美旧,因為他判斷第一個就不成立了,所以直接就返回了榴嗅,不繼續(xù)判斷下面的元素了。
Where()方法將返回所有的元素根據(jù)條件嗽测。
TakeWhile()方法疏魏,從集合開頭根據(jù)條件判斷元素晤愧,如果條件為false,則不進行對后面元素的判斷。
result.TakeWhile((judge,index) => index == result.ToList().Count-1);