当某些条件失败时,如何退出LINQ foreach循环

时间:2016-08-25 15:14:37

标签: c# linq

我已经实现了LINQ foreach循环来执行某些操作,如果某些条件失败,我想退出该点并向用户显示错误并且不想继续。

以下是示例代码段。

myList.ForEach(number => 
{
  if (number.Value == null) 
  {
    isError = true;
    return;
  } 
  else if (a.SomeCondition()) 
  {
    //Do some execution
  }
});

但是返回关键字根本不起作用,甚至尝试使用break关键字也没用。需要一些帮助。

4 个答案:

答案 0 :(得分:2)

如评论所述,只需使用普通的foreach构造。通过将ForEach方法与lambda一起使用,您什么都得不到。如果有的话甚至可读性稍差。

foreach (var number in myList)
{
    if (number.Value == null) 
    {
      isError = true;
      break;
    } 
    else if (a.SomeCondition()) 
    {
      //Do some execution
    }
}

答案 1 :(得分:0)

如果你绝对必须使用Lambda ForEach(),你可以使用它,但是没有办法打破语句。

myList.ForEach(number => 
{
  if (number.Value == null || isError) 
  {
    isError = true;
  } 
  else if (a.SomeCondition()) 
  {
    //Do some execution
  }
});

答案 2 :(得分:0)

使用foreach语句你当然会更好,所以你可以实现这一目标。也就是说你可以使用一个bool来有效地跳过剩余的迭代。

var keepGoing = true;
myList.ForEach(number => 
{
  if (keepGoing)
  {
    if (number.Value == null) 
    {
      isError = true;
      keepGoing = false;
    } 
    else if (a.SomeCondition()) 
    {
      //Do some execution
    }
  }
});

我建议也阅读这个帖子。 List ForEach break

答案 3 :(得分:-2)

您可以抛出异常并在try / catch块中包含myList.ForEach。