コード例 #1
0
 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);
     }
 }
コード例 #2
0
 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);
             }
         }
     }
 }
コード例 #3
0
 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);
                 }
             }
         }
     }
 }