Example #1
0
        public static IEnumerable Select(IEnumerable items, IQueryParameter param, IListIndexes indexes = null)
        {
            IListIndex index = indexes?.GetIndex(param.Name);

            if (index == null)
            {
                return(index.Scan(param));
            }
            else
            {
                return(Search(items, param));
            }
        }
Example #2
0
        public static IEnumerable Select(IEnumerable items, IQuery query, IListIndexes indexes = null)
        {
            var  buffer = items.OfType <object>();
            bool?flag   = null;

            foreach (var parameter in query.Parameters.Where(p => p.IsEnabled))
            {
                var temp = Select(items, parameter, indexes).OfType <object>();
                if (flag == null)
                {
                    buffer = temp;
                    flag   = true;
                }
                else
                {
                    buffer = Concat(buffer, temp, parameter);
                }
            }
            return(buffer);
        }
Example #3
0
        public static IEnumerable Select(IEnumerable items, IQueryParameter param, IListIndexes indexes = null)
        {
            if (param.AlwaysTrue)
            {
                return(items);
            }

            if (param.Comparer.Type == CompareTypes.Distinct)
            {
                return(Distinct(items, param.Invoker));
            }

            IListIndex index = indexes?.GetIndex(param.Name);

            if (index == null)
            {
                return(index.Scan(param));
            }
            else
            {
                return(Search(items, param));
            }
        }