示例#1
0
        public override IEnumerable <KeyValuePair <AttributeValue, long> > Enumerate(QueryCriteria value)
        {
            IResultSet <KeyValuePair <AttributeValue, long> > resultSet =
                new ListedResultSet <KeyValuePair <AttributeValue, long> >();

            Evaluate(ref resultSet, value);
            return(resultSet);
        }
示例#2
0
 public virtual void Evaluate(ref IResultSet <T> resultSet, QueryCriteria values)
 {
     if (resultSet == null)
     {
         resultSet = new ListedResultSet <T>();
     }
     foreach (T result in Enumerate(values))
     {
         resultSet.Add(result);
     }
 }
示例#3
0
        public override void Evaluate(ref IResultSet <KeyValuePair <AttributeValue, long> > resultSet, QueryCriteria values)
        {
            if (resultSet == null)
            {
                resultSet = new ListedResultSet <KeyValuePair <AttributeValue, long> >();
            }
            IDictionary <long, AttributeValue> initial = new HashVector <long, AttributeValue>();
            var firstIteration = true;
            var intersecter    = new Intersecter <long, AttributeValue>(initial);

            if (_childPredicates != null)
            {
                foreach (var predicate in _childPredicates)
                {
                    var terminal = (TerminalPredicate)predicate;
                    if (terminal == null)
                    {
                        continue;
                    }
                    foreach (var kvp in terminal.Enumerate(values))
                    {
                        if (firstIteration)
                        {
                            initial[kvp.Value] = kvp.Key;
                        }
                        else
                        {
                            intersecter.Add(kvp.Value, kvp.Key);
                        }
                    }
                    if (!firstIteration)
                    {
                        intersecter.Flip();
                    }
                    firstIteration = false;
                }
            }
            foreach (var keyValuePair in intersecter.FinalResult)
            {
                resultSet.Add(new KeyValuePair <AttributeValue, long>(keyValuePair.Value, keyValuePair.Key));
            }
        }
示例#4
0
 public override void Evaluate(ref IResultSet <KeyValuePair <AttributeValue, long> > resultSet, QueryCriteria values)
 {
     resultSet = new ListedResultSet <KeyValuePair <AttributeValue, long> >();
 }