Materialize result of taking the required values.

You don't want to run the generator twice but you do want to limit the number of items taken. The solution is to take the required items, then materialize the list (convert it to a concrete object like a List<T>) so that you have just those values you need in a single object.  This is different than trying to materialize before selecting the required items - which doesn't work in this case because the collection is infinite.