static IEnumerable<int> Where( this IEnumerable<int> source, Func<int, bool> predicate) { foreach (var x in source) if (x == 20) yield break; else if (predicate(x)) yield return x; //else // "Skip: {0}".FormatWith(x).Dump(); }