Как выйти из общего списка ForEach с делегатом? - PullRequest
0 голосов
/ 30 апреля 2009

Как выйти из общего списка ForEach с делегатом? Перерыв или возврат не работает.

Пример:

        Peoples.ForEach(delegate(People someone)
        {
            if(someone.Name == "foo")
               ???? What to do to exit immediatly ?
        });

Ответы [ 4 ]

2 голосов
/ 30 апреля 2009

Вы не можете достичь этого с помощью ForEach .

1 голос
/ 30 апреля 2009

просто напиши вот так

foreach(People someone in Peoples)
{
    if(someone.Name == "foo") break;
    // rest of code below for != "foo"...
}

чтобы просто пропустить foo и по-прежнему выполнять действие для всех остальных, кого вы можете сделать

if(someone.Name == "foo") continue;
0 голосов
/ 30 апреля 2009

Хотя это и не рекомендуется, вы можете выдать исключение изнутри ForEach(), когда условие выполнено.

0 голосов
/ 30 апреля 2009

Вы можете сделать что-то вроде:

        Peoples.TakeWhile(p=> p.Name != "foo")
            .ToList().ForEach(p => Console.WriteLine(p.Name));

но это излишне и плохо с точки зрения производительности ...

Просто используйте простую петлю foreach.

...