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 ?
        });
Foi útil?

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
scroll top