/// <summary> /// Returns a data-producer that will yield /// elements a sequence as long as a condition /// is satsified; when the condition fails for an element, /// that element and all subsequent elements are ignored. /// </summary> /// <param name="source">The source data-producer</param> /// <param name="predicate">The condition to yield elements</param> public static IDataProducer <TSource> TakeWhile <TSource>(this IDataProducer <TSource> source, DotNet20.Func <TSource, bool> predicate) { predicate.ThrowIfNull("predicate"); return(source.TakeWhile((x, index) => predicate(x))); }