@bdukes: Следует иметь в виду, что Вы не действительно сокрытие участника. Например:
class Base
{
public void F() {}
}
class Derived : Base
{
new private void F() {}
}
Base o = new Derived();
o.F(); // works
, Но это выполняет то же как частное наследование в C++, который является тем, что хотел корреспондент.
По сути, это цикл Do-While:
WHILE (1=1)
BEGIN
-- Do stuff...
IF (some_condition is true)
BREAK;
END
Но, как заметил @Joel Coehoorn, всегда старайтесь сначала использовать подход, основанный на наборах. Я бы прибег к циклу только в том случае, если не могу придумать способ решения с использованием операций над множествами.