public bool MoveNext()
        {
            if (_innerEnumerator == null)
            {
                if (!_prevEnumerator.MoveNext())
                {
                    return(false);
                }

                _innerEnumerator = _projector(_prevEnumerator.Current).GetEnumerator();
                return(MoveNext());
            }

            if (_innerEnumerator.MoveNext())
            {
                _current = _innerEnumerator.Current;
                return(true);
            }

            _innerEnumerator = null;
            return(MoveNext());
        }
Ejemplo n.º 2
0
 public TakeEnumerator(ILazyEnumerator <T> prevEnumerator, int limit)
 {
     _prevEnumerator = prevEnumerator;
     _limit          = limit;
     _counter        = 0;
 }
Ejemplo n.º 3
0
 public WhereEnumerator(ILazyEnumerator <T> prevEnumerator, Func <T, bool> predicate)
 {
     _prevEnumerator = prevEnumerator;
     _predicate      = predicate;
 }
Ejemplo n.º 4
0
 public SelectEnumerator(ILazyEnumerator <T> prevEnumerator, Func <T, K> projector)
 {
     _projector      = projector;
     _prevEnumerator = prevEnumerator;
 }
Ejemplo n.º 5
0
 public LazyEnumerable(ILazyEnumerator <T> enumerator)
 {
     _enumerator = enumerator;
 }
 public SelectManyEnumerator(ILazyEnumerator <T> prevEnumerator, Func <T, ILazyEnumerable <K> > projector)
 {
     _prevEnumerator = prevEnumerator;
     _projector      = projector;
 }