public async ValueTask <bool> MoveNextAsync() #endif { if (_queue.IsEmpty()) { return(false); } if (skipFirst) { skipFirst = false; return(true); } var first = _queue.Poll(); #if EFCORE2 if (await first.MoveNext(cancellationToken)) #endif #if !EFCORE2 if (await first.MoveNextAsync()) #endif { _queue.Offer(first); } if (_queue.IsEmpty()) { return(false); } _currentEnumerator = _queue.Peek(); return(true); }
private void SetOrderEnumerator() { foreach (var source in _enumerators) { var orderStreamEnumerator = new OrderStreamMergeAsyncEnumerator <T>(_mergeContext, source); if (orderStreamEnumerator.HasElement()) { orderStreamEnumerator.SkipFirst(); _queue.Offer(orderStreamEnumerator); } } _currentEnumerator = _queue.IsEmpty() ? _enumerators.FirstOrDefault() : _queue.Peek(); }
public NoPaginationStreamMergeEnumerator(StreamMergeContext <T> mergeContext, IEnumerable <IStreamMergeAsyncEnumerator <T> > sources) { _mergeContext = mergeContext; _skip = mergeContext.Skip; _take = mergeContext.Take; if (_mergeContext.HasGroupQuery()) { _enumerator = new MultiAggregateOrderStreamMergeAsyncEnumerator <T>(_mergeContext, sources); } else { _enumerator = new MultiOrderStreamMergeAsyncEnumerator <T>(_mergeContext, sources); } }
public OrderStreamMergeAsyncEnumerator(StreamMergeContext <T> mergeContext, IStreamMergeAsyncEnumerator <T> enumerator) { _mergeContext = mergeContext; _enumerator = enumerator; SetOrderValues(); }