Is there a reason you need to do this?
@foreach(var x in Model.Categories) {
<li><a href="#">@x.Name</a></li>
}
Above is the same thing, and more idiomatic.
.ForEach() Razor. Razor , , . .ForEach() , , :
'void' 'object'
, :
@foreach (var item in Model.Categories.Select((cat, i) => new { Item = cat, Index = i })) {
<li><a href="#">@x.Index - @x.Item.Name</a></li>
}
, , Item, Index IEnumerable<T>, yield , .
public static IEnumerable<IndexedItem<T>> WithIndex<T>(this IEnumerable<T> input)
{
int i = 0;
foreach(T item in input)
yield return new IndexedItem<T> { Index = i++, Item = item };
}
:
public class IndexedItem<T>
{
public int Index { get; set; }
public T Item { get; set; }
}
:
@foreach(var x in Model.Categories.WithIndex()) {
<li><a href="#">@x.Index - @x.Item.Name</a></li>
}