private DataRow[] GetLinearFilteredRows(Range range)
{
DataRow[] resultRows;
if (_linearExpression == null)
{
return _index.GetRows(range);
}
List<DataRow> matchingRows = new List<DataRow>();
RBTree<int>.RBTreeEnumerator iterator = _index.GetEnumerator(range.Min);
for (int i = 0; i < range.Count && iterator.MoveNext(); i++)
{
if (AcceptRecord(iterator.Current))
{
matchingRows.Add(_table._recordManager[iterator.Current]);
}
}
resultRows = _table.NewRowArray(matchingRows.Count);
matchingRows.CopyTo(resultRows);
return resultRows;
}