public IRowCursor[] GetRowCursorSet(out IRowCursorConsolidator consolidator, Func <int, bool> needCol, int n, IRandom rand = null) { var cur = GetRowCursor(needCol, rand); consolidator = new Consolidator(); if (n >= 2) { var setColumns = new HashSet <int>(_columns); var res = new IRowCursor[n]; var empty = new EmptyCursor(this, col => setColumns.Contains(col) || needCol(col) || (_otherValues != null && _otherValues.IsColumnActive(col))); for (int i = 0; i < n; ++i) { res[i] = i == 0 ? cur : empty; } return(res); } else { return new IRowCursor[] { cur } }; }
public IRowCursor[] GetRowCursorSet(out IRowCursorConsolidator consolidator, Func <int, bool> needCol, int n, IRandom rand = null) { var cur = GetRowCursor(needCol, rand); consolidator = new Consolidator(); if (n >= 2) { // This trick avoids the cursor to be split into multiple later. var res = new IRowCursor[n]; var empty = new EmptyCursor(this, col => col == _column || needCol(col) || (_otherValues != null && _otherValues.IsColumnActive(col))); for (int i = 0; i < n; ++i) { res[i] = i == 0 ? cur : empty; } return(res); } else { return new IRowCursor[] { cur } }; }