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,则不进行对后面元素的判断。

 

你可能感兴趣的:(Net开发)