Вы повторно используете i
в качестве переменной цикла, а i
изменяется в вашей setOrderNumber
лямбде - не изменяйте i
- неясно, что вы намеревались сделать , может быть следующее:
Action<Order, int> setOrderNumber = (Order o, int count) =>
{
o.orderNumber = count;
};
Если вышеупомянутое является случаем, вы могли бы достичь этого намного, хотя намного проще, ваш код кажется излишне сложным, то есть:
for (i = 0; i < orderArray.Length; i++)
{
orderArray[i].orderNumber = i;
}
или даже проще, не создавая массив вообще:
int orderNum = 0;
foreach(var order in orders)
{
order.orderNumber = orderNum++;
}
Edit:
Чтобы установить номера по убыванию, вы можете сначала определить количество заказов, а затем вернуться назад:
int orderNum = orders.Count();
foreach(var order in orders)
{
order.orderNumber = orderNum--;
}
Выше приведен один из порядковых номеров в порядке убывания. Другой подход, более интуитивный и, вероятно, более простой в обслуживании, состоит в том, чтобы просто выполнить перечисление в обратном порядке:
int orderNum = 0;
foreach(var order in orders.Reverse())
{
order.orderNumber = orderNum++;
}