public Cursor(IChannelProvider provider, PartitionedFileLoader parent, IMultiStreamSource files, Func <int, bool> predicate, Random rand) : base(provider) { Contracts.AssertValue(parent); Contracts.AssertValue(files); Contracts.AssertValue(predicate); _parent = parent; _active = Utils.BuildArray(Schema.Count, predicate); _subActive = _active.Take(SubColumnCount).ToArray(); _colValues = new ReadOnlyMemory <char> [Schema.Count - SubColumnCount]; _subGetters = new Delegate[SubColumnCount]; _getters = CreateGetters(); _fileOrder = CreateFileOrder(rand).GetEnumerator(); }
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(); }