Example #1
0
        /// <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));
        }