Como sair de um ForEach lista genérica com delegado?
Pergunta
Como faço para sair de um ForEach lista genérica com um delegado? Pausa ou retorno não funciona.
Exemplo:
Peoples.ForEach(delegate(People someone)
{
if(someone.Name == "foo")
???? What to do to exit immediatly ?
});
Solução
Você não pode conseguir isso com ForEach .
Outras dicas
apenas escrevê-lo fora como este
foreach(People someone in Peoples)
{
if(someone.Name == "foo") break;
// rest of code below for != "foo"...
}
para simplesmente ignorar foo e ainda fazer a ação para todos os outros que você poderia fazer
if(someone.Name == "foo") continue;
Você poderia fazer algo como:
Peoples.TakeWhile(p=> p.Name != "foo")
.ToList().ForEach(p => Console.WriteLine(p.Name));
mas isso é um exagero e ruim em termos de desempenho ...
Basta usar um loop foreach
simples.
Embora não seja recomendado, você pode lançar uma exceção dentro do ForEach()
quando a condição é satisfeita.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow