You start a repeated iteration on Count(a full iteration of the source is required to provide a response). IEnumerablewill never save its values and will always re-iterate when necessary.
, Array List<T>, , yield return (, Enumerable.Range), .
ReSharper , .
Count, . , , , - var myCachedValues = myEnumerable.ToArray(), ( ).
( ), , , - , . IRepeatable. , .