public static void Main() { foreach (int n in Numbers(i => i >= 2) { Console.WriteLine("Got " + n); } } IEnumerable Numbers(Func predicate) { for (int i = 0; ; i++) { if (predicate(i)) yield break; Console.WriteLine("Yielding " + i); yield return i; } }