Во-первых, вы уверены, что это действительно IEnumerator, а не IEnumerable? Я сильно подозреваю, что это последнее.
Кроме того, вопрос не совсем ясен. У вас есть индекс, и вы хотите получить объект по этому индексу? Если да, и если у вас есть IEnumerable (не IEnumerator), вы можете сделать это:
using System.Linq;
...
var product = Model.Products.ElementAt(i);
Если вы хотите перечислить всю коллекцию, но также хотите иметь индекс для каждого элемента, тогда В.А. или ответы Nestor - это то, что вы хотите.
Ответ 3
В IEnumerator нет индекса. Используйте
foreach(var item in Model.Products)
{
...item...
}
вы можете сделать свой собственный индекс, если хотите:
int i=0;
foreach(var item in Model.Products)
{
... item...
i++;
}
Ответ 4
foreach(var indexedProduct in Model.Products.Select((p, i)=> new {Product = p, Index = i})
{
...
...indexedProduct.Product...
...indexProduct.Index ...//this is what you need.
...
}
Ответ 5
Лучший способ получить индекс по индексу - связать свою перечислимую коллекцию с массивом с использованием Linq следующим образом:
using System.Linq;
...
class Model {
IEnumerable<Product> Products;
}
...
// Somewhere else in your solution,
// assume model is an instance of the Model class
// and that Products references a concrete generic collection
// of Product such as, for example, a List<Product>.
...
var item = model.Products.ToArray()[index];