protected override bool MoveNextCore() { Ch.AssertValue(_currentCursor); while (!_currentCursor.MoveNext()) { // Mark the current cursor as finished. _currentCursor.Dispose(); _currentCursor = null; if (++_currentSourceIndex >= Sources.Length) { return(false); } var columnsNeeded = Schema.Where(col => IsColumnActive(col.Index)); _currentCursor = Sources[_currentSourceIndex].GetRowCursor(columnsNeeded); _currentIdGetter = _currentCursor.GetIdGetter(); } return(true); }
public Cursor(IChannelProvider provider, PartitionedFileLoader parent, IMultiStreamSource files, IEnumerable <DataViewSchema.Column> columnsNeeded, Random rand) : base(provider) { Contracts.AssertValue(parent); Contracts.AssertValue(files); _parent = parent; _columnsNeeded = columnsNeeded; _active = Utils.BuildArray(Schema.Count, columnsNeeded); _subActive = _active.Take(SubColumnCount).ToArray(); _colValues = new ReadOnlyMemory <char> [Schema.Count - SubColumnCount]; _subActivecolumnsNeeded = Schema.Where(x => (_subActive?.Length > x.Index) && _subActive[x.Index]); _subGetters = new Delegate[SubColumnCount]; _getters = CreateGetters(); _fileOrder = CreateFileOrder(rand).GetEnumerator(); }