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)); } }
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); }
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)); } }