public override IEnumerable <KeyValuePair <AttributeValue, long> > Enumerate(QueryCriteria value) { using ( var resultSet = new SortedResultSet <KeyValuePair <AttributeValue, long> >(new KVPValueComparer <AttributeValue, long>()) ) { var rangePredicate = new RangePredicate(Source, start, excStart, end, excEnd, IsInverse); foreach (var kvp in rangePredicate.Enumerate(value)) { resultSet.Add(kvp); } return(resultSet); } }
public override IEnumerable <KeyValuePair <AttributeValue, long> > Enumerate(QueryCriteria values) { using (var resultSet = new SortedResultSet <ResultWrapper <KeyValuePair <AttributeValue, long> > >()) { if (_childPredicates != null) { foreach (var child in _childPredicates) { var terminal = (TerminalPredicate)child; if (terminal != null) { foreach (var kvp in terminal.Enumerate(values)) { var wrapper = new ResultWrapper <KeyValuePair <AttributeValue, long> >(kvp); bool validDocument = false; if (values.ContainsDistinction) { IJSONDocument document = values.Store.GetDocument(kvp.Value, null); AttributeValue attValue; validDocument = values.DistinctField.GetAttributeValue(document, out attValue); wrapper.SortField = attValue; } if (validDocument && !resultSet.Contains(wrapper)) { resultSet.Add(wrapper); } } } } foreach (var resultWrapper in resultSet) { yield return(resultWrapper.Value); } } } }
public override IEnumerable <KeyValuePair <AttributeValue, long> > Enumerate(QueryCriteria value) { using (IResultSet <ResultWrapper <KeyValuePair <AttributeValue, long> > > resultSet = new SortedResultSet <ResultWrapper <KeyValuePair <AttributeValue, long> > >()) { if (_childPredicates != null) { foreach (var child in _childPredicates) { var terminal = (TerminalPredicate)child; if (terminal != null) { foreach (var kvp in terminal.Enumerate(value)) { var wrapper = new ResultWrapper <KeyValuePair <AttributeValue, long> >(kvp); AttributeValue attValue; if (value.OrderByField.GetAttributeValue(value.Store.GetDocument(kvp.Value, null), out attValue)) { wrapper.SortField = attValue; if (resultSet.Contains(wrapper)) { ResultWrapper <KeyValuePair <AttributeValue, long> > oldWrapper = resultSet[wrapper]; ResultWrapperList <KeyValuePair <AttributeValue, long> > list = oldWrapper.ToList(); list.List.Add(kvp); resultSet[wrapper] = list; } else { resultSet.Add(wrapper); } } } } } } foreach (var resultWrapper in resultSet) { var list = resultWrapper as ResultWrapperList <KeyValuePair <AttributeValue, long> >; if (list == null) { yield return(resultWrapper.Value); } else { foreach (var rowId in list.List) { yield return(rowId); } } } } }