/** * @return \Iterator */ public function getIterator() { $dict = $this->dict; $it = Ginq::from($dict->keys())->select(function ($key) use(&$dict) { return new GroupingGinq(IteratorUtil::iterator($dict->get($key)), $key); }, ValueSelector::getInstance())->getIterator(); return $it; }
/** * @param \Closure|string|int|Selector|null $compareKeySelector * @return OrderingGinq */ public function thenByDesc($compareKeySelector = null) { $compareKeySelector = SelectorResolver::resolve($compareKeySelector, ValueSelector::getInstance()); $comparer = ComparerResolver::resolve(null, Comparer::getDefault()); $comparer = new ProjectionComparer($compareKeySelector, $comparer); $comparer = new ReverseComparer($comparer); $comparer = new CompoundComparer($this->comparer, $comparer); return new OrderingGinq($this->it, $comparer); }
public function rewind() { $outerKeySelector = $this->outerKeySelector; $lookup = Ginq::from($this->inner)->toLookup($this->innerKeySelector, ValueSelector::getInstance(), $this->eqComparer); $this->it = new SelectManyWithJoinIterator($this->outer, new DelegateSelector(function ($v, $k) use($lookup, $outerKeySelector) { return $lookup->get($outerKeySelector->select($v, $k)); }), $this->valueJoinSelector, $this->keyJoinSelector); $this->it->rewind(); }
public function rewind() { $this->outer->rewind(); $this->lookup = Ginq::from($this->inner)->toLookup($this->innerCompareKeySelector, ValueSelector::getInstance()); $this->fetchIfValid(); }