我已经实现了LINQ foreach循环来执行某些操作,如果某些条件失败,我想退出该点并向用户显示错误并且不想继续。
以下是示例代码段。
myList.ForEach(number =>
{
if (number.Value == null)
{
isError = true;
return;
}
else if (a.SomeCondition())
{
//Do some execution
}
});
但是返回关键字根本不起作用,甚至尝试使用break关键字也没用。需要一些帮助。
答案 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。