private IEnumerable <long> TakeFromTo(PartitionRowIDRange part, IEnumerable <long> rowIds) { foreach (var rowId in rowIds) { if (rowId < part.Low) { yield break; } if (rowId <= part.High) { yield return(RowIDUtil.ToRowID(part.PartitionID, rowId)); } } }
private IEnumerable <long> IsPartitionMatch(IReadTransactionContext tx, PartitionRowIDRange part, IPartitionReader partition, ERowIDSortDirection sortDirection) { if (sortDirection == ERowIDSortDirection.Asc) { for (long rowId = part.Low; rowId <= part.High; rowId++) { if (IsMatch(partition, tx.ReadCache, rowId)) { yield return(RowIDUtil.ToRowID(part.PartitionID, rowId)); } } } else { for (long rowId = part.High; rowId >= part.Low; rowId--) { if (IsMatch(partition, tx.ReadCache, rowId)) { yield return(RowIDUtil.ToRowID(part.PartitionID, rowId)); } } } }