There is no way to do this. IEnumerable
is specifically designed in such a way that you cannot fetch a given item until you have already fetched the item before it.
Whatever is generating the IEnumerable
needs to be the one to provide some type of support for parallelizing the generation of these items.