break出lambda或匿名委託

遇到一個基礎知識點

代碼如下:

 

 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,則不進行對後面元素的判斷。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章