Это будет работать только для Списка, а не для любого IEnumerable, но в LINQ есть это:
IList<Object> collection = new List<Object> {
new Object(),
new Object(),
new Object(),
};
foreach (Object o in collection)
{
Console.WriteLine(collection.IndexOf(o));
}
Console.ReadLine();
@ Джонатан Я не сказал, что это был отличный ответ, я просто сказал, что он просто показывает, что можно сделать то, что он просил:)
@ Graphain Я бы не ожидал, что это будет быстро - я не совсем уверен, как это работает, он может повторить весь список каждый раз, чтобы найти подходящий объект, который был бы чертовски похож на сравнения.
Тем не менее, List может хранить индекс каждого объекта вместе с подсчетом.
Кажется, у Джонатана есть идея получше, если он уточнит?
Было бы лучше просто посчитать, где вы находитесь, в foreach, хотя, проще и более адаптируемо.