private IEnumerable <TObject> StreamObjectsWhenNotStreaming(TParam parameters) { var streamCount = StreamCount(); //If we're piping from groups, don't specify a count so that we may retrieve all records and retrieve the //correct amount that match the criteria if (!streamCount) { parameters.Count = null; } var iterator = new TakeIterator <TObject, TParam>( Count.Value, parameters, GetNotStreamingStreamer(streamCount), () => StreamProvider.GetTotalExist(parameters), PostProcessRecords, SortReturnedRecordsRunner, streamCount ); return(iterator); }