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

C# 如何在.ForEach()方法中使用continue语句,c#,.net,linq,lambda,anonymous-methods,C#,.net,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

在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
   }
List lst=GetIdList();
lst.ForEach(id=>
{
尝试
{
var article=GetArticle(id);
if(article.author.contains(“Twain”))
{
//想现在就跳出来吗
//继续;****************这就是我想做的*******
}
//其他代码如下
}
编辑:
感谢所有伟大的答案。感谢您的澄清。foreach不是一个扩展方法。我使用这种结构来保持编码风格的一致性(不同的程序员在同一个类中使用另一个类似的方法)…感谢您提供了避免使用.foreach的原因的链接。

如果出现以下情况,只需反转您的

lst.ForEach(id => {
                      var article = GetArticle(id);
                      if (!article.author.contains("Twain"))
                      {
                          // other code here
                      }
                  });
A) ForEach不是LINQ,它是
列表上的一个方法

B) 使用foreach即可。
C)
return
就可以了

编辑


只是想澄清一下,您所做的是提供一个将为列表中的每个条目调用的方法。
return
将仅应用于该成员的方法。列表中的其他成员仍将调用该方法。

就我个人而言,我只会使用标准的foreach循环,而不是
list.foreach


在这种情况下,可以反转条件(以避免出现这种情况下的代码)或者调用<代码>返回< /代码>,因为您的目标是使用<代码>继续<代码>语句。但是,如果您想“代码>中断<代码>,这将不起作用。如果这是您想要的,return应该可以。如果您想要完全退出,您可能需要使用实际的LINQ方法(如Any())重写它。

您使用的方法是在类上定义的方法,而不是LINQ扩展方法。这个问题实际上与LINQ无关


return;
在传递给
列表的代理中。ForEach
应在实际的
ForEach
构造中使用
continue;
近似值。

回答您的问题:

List<string> lst = GetIdList();
lst.ForEach(id =>
{
    try
    {
        var article = GetArticle(id);
        if (article.author.contains("Twain"))
            goto _continue;
    }

    //other code follows

    _continue:;
}
List lst=GetIdList();
lst.ForEach(id=>
{
尝试
{
var article=GetArticle(id);
if(article.author.contains(“Twain”))
继续;
}
//其他代码如下
_继续:;
}
其他答案是正确的,请避免
.ForEach()


goto
也应该避免,尽管它有时对缩短代码块很有用。

如果你想使用foreach这样糟糕的工具,请使用常规foreach而不是过度强调,请使用标准foreach循环。重新检查术语“continue”。在循环中,“continue”意味着“停止处理此项并转到下一项”。完全退出处理的关键字为“break”+1,因为它与所选答案相同,但比所选答案早1分钟。