Если вы используете 3.5, похоже, что в LINQ есть метод Reverse()
Это не будет повторяться в обратном порядке, но изменит весь список, тогда вы можете сделать свой прогиб.
Или вы можете использовать простой для оператора:
for(int i = list.Count -1; i >= 0; --i)
{
x = list[i];
}
Ответ 4
В качестве альтернативы, если коллекция IEnumerable и, следовательно, без произвольного доступа, используйте метод System.Linq IEnumerable.Reverse() и применяйте forearch как обычно.
using System.Linq;
foreach (var c in collection.Reverse()) {
}