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 方法
从集合开头提取元素,这个函数的定义与Skip()类似。
int[] myAry = {1,2,3,4,5,6,7,8,9,0};
var q1 = myAry.Take(3);//返回前面三个元素。里面的参数是指要返回元素的数量。
var q2 = myAry.TakeWhile((num,index)=>index<4);
//返回索引小于3的元素,这里可以有1个或2个参数,第一个参数为元素的值,第二个参数是元素的索引。
特别注意,TakeWhile()从集合的第一个元素开始,使用参数进行计算(index<4),如果返回true提取并继续判断下一个元素。如果返回false则停止判断,返回集合中被提取的元素。
所以如果上面是这样的myAry.TakeWhile((num,index)=>index>4);则返回0个元素,因为他判断第一个就不成立了,所以直接就返回了,不继续判断下面的元素了。
Where()方法将返回所有的元素根据条件。
TakeWhile()方法,从集合开头根据条件判断元素,如果条件为false,则不进行对后面元素的判断。
result.TakeWhile((judge,index) => index == result.ToList().Count-1);