如何在.ForEach()方法中使用continue语句

Lag*_*una 21 .net c# linq lambda anonymous-methods

是否有相当于ForEach方法中的continue语句?

List<string> lst = GetIdList();
lst.ForEach(id =>
{
     try
     {
       var article = GetArticle(id);
       if (article.author.contains("Twain"))
       {
         //want to jump out of the foreach now
         //continue; **************this is what i want to do*******

       }

       //other code follows
   }
Run Code Online (Sandbox Code Playgroud)

编辑: 谢谢你所有的好答案.并且感谢您澄清.foreach不是一种扩展方法.我使用这种结构来保持编码风格的一致性(一个不同的程序员在同一个类中使用另一个类似的方法)...并且感谢为什么要避免使用.foreach的链接.

cad*_*ll0 55

A)ForEach不是LINQ,它是一种方法List<T>.
B)只需使用foreach.
C)return会这样做.

编辑

只是为了澄清,你正在做的是为列表中的每个条目提供一个方法. return将仅适用于该成员的方法.列表中的其余成员仍将调用该方法.

  • +1因为它与所选答案的答案相同,但提前1分钟. (9认同)

Ree*_*sey 18

就个人而言,我只会使用标准的foreach循环而不是List<T>.ForEach.

在这种情况下,您可以反转条件(以避免在这种情况下的代码)或调用return,因为您的目标是使用continue语句.但是,如果您愿意break,这将无效.话虽如此,还有其他一些原因可以避免List<T>.ForEach,所以我会考虑将其转换为正常的foreach语句.


Luk*_*keH 10

只是颠倒你的if情况:

lst.ForEach(id => {
                      var article = GetArticle(id);
                      if (!article.author.contains("Twain"))
                      {
                          // other code here
                      }
                  });
Run Code Online (Sandbox Code Playgroud)