function groupJoinResultSelectorFunc(Person $person, IEnumerable $pets) : string { $petList = $pets->select(function (Pet $pet) { return $pet->Name; })->toArray(); return sprintf('Owner: %s; Pets: "%s"', $person->Name, implode('", "', $petList)); }
/** * Resets that sequence. * * @param bool $resetSequence Reset inner sequence or not. */ protected function resetMe(bool $resetSequence = true) { if ($resetSequence) { $this->_sequence->reset(); } $selector = $this->_selector; // prepare items before ... $items = $this->_sequence->select(function ($x, IItemContext $ctx) use($selector) { $result = new \stdClass(); $result->key = $ctx->key(); $result->sortBy = $selector($x, $ctx); $result->value = $x; return $result; })->toArray(); $comparer = $this->_comparer; \uasort($items, function (\stdClass $x, \stdClass $y) use($comparer) : int { return $comparer($x->sortBy, $y->sortBy); }); $this->_i = static::createEnumerable($items)->withNewKeys('($key, $item) => $item->key')->select('$x => $x->value'); }