/// <summary> /// Selects rows where value of provided field in range from min to max inclusively /// </summary> /// <typeparam name="TField"></typeparam> /// <param name="field"></param> /// <param name="min"></param> /// <param name="max"></param> /// <returns></returns> public IEnumerable <RowId> Select <TField>(IField <TRecord, TField> field, TField min, TField max) { this.table.ValidateField(field); List <IIndex <TRecord> > list = this.table.Indexes[field.Order]; if (list != null) { foreach (IIndex <TRecord> index in list) { if (!index.IsUnique) { RangeIndex <TField> rangeIndex = index as RangeIndex <TField>; if (rangeIndex != null && rangeIndex.Field == field) { return(rangeIndex.Find(min, max, this.StoreSnapshot.Version)); } } } } return(this.SelectDirect(field, min, max)); }