How exactly is the right way to call IEnumerator.Reset?
The documentation says:
The Reset method is provided for COM interoperabi
Reset
I recommend not using it. A lot of modern IEnumerable implementations will just throw an exception.
IEnumerable
Getting enumerators is hardly ever "expensive". It is enumerating them all (fully) that can be expensive.