IEnumerable[<T>]
представляет последовательность данных, а не список произвольного доступа. Не все последовательности могут быть обращены или даже воспроизведены. Последовательности, основанные на сетевых потоках, доступе к базе данных и т. Д. - или эта красота:
IEnumerable<int> GetData() {
Random rand = new Random();
while(true) { yield return rand.Next(); }
}
Лучшее, что вы можете сделать, это начать заново - не , вызвав Reset()
(что устарело), но вместо этого получив свежий перечислитель.
Даже без Random
несложно придумать простые последовательности, которые не могут быть обращены (без буферизации и обращения буфера). Для того, что вы хотите, рассмотрите вместо этого IList[<T>]
- вы можете получить доступ к данным через индексатор в любом порядке.