And then there's stuff like this comment
"Why do you need to know how many items are in your enumeration in advance? If you do, you're doing it wrong."
But how often are you really using say LINQ over "OnlyEnumerable" (as in something that even theoretically can't support random access). Last I checked, most people have RAM (random access memory, FYI) in the computer, so it's really hard to understand why eg. Skip(x) or Reverse() would need to iterate over each element when most of the time the underlying object is something that could implement various interfaces that allow optimizing the access.