遇到一個基礎知識點
代碼如下:
ListPCBData[intCount - i].listGroup.ForEach((x) =>
{
var PadDataQ = x.PadData.Where(q => q.JudgeRes == 1);
if (PadDataQ.Count() == 0)
{
blnCheckPoint = false;
// 想在這裏如果都是0 就跳出foreach
//break; 報錯. 提示無法離開lambda體或是匿名委託.
//return 跳不出去
}
//正確代碼
if (!blnCheckPoint)
return;
});
}
委託可以用return跳出循環.
記錄個知識點
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,則不進行對後面元素的判斷。