for (int z = 0; z <= newQuantity - lineItem.DelegatesList.Count; z++)
{
lineItem.DelegatesList.Add(new OrderDelegate());
}
Ваш цикл включает в себя newQuantity - lineItem.DelegatesList.Count
.
Значение lineItem.DelegatesList.Count
увеличивается с каждой итерацией цикла.
Это означает, что при увеличении Z оно сравнивается с уменьшающимся числом.
т.е.
Первый запуск, z = 0, newQuantity = 8, lineItem.DelegatesList.Count = 1.
Второй запуск, z = 1, newQuantity = 8, lineItem.DelegatesList.Count = 2.
третий запуск, z = 2, newQuantity = 8, lineItem.DelegatesList.Count = 3.
Четвертый прогон, z = 3, newQuantity = 8, lineItem.DelegatesList.Count = 4.
Пятый прогон, z = 4, newQuantity = 8, lineItem.DelegatesList.Count = 5.
z <= newQuantity - lineItem.DelegatesList.Count;
на пятом проходе, 4 <= 8-5 (3). </p>
Вы можете просто взять начальный счет и поработать с ним.
else
{
lineItem.Quantity = newQuantity;
int initialCount = lineItem.DelegatesList.Count;
if (lineItem.DelegatesList.Count > newQuantity)
{
for (int i = lineItem.DelegatesList.Count - 1; i >= newQuantity; --i)
{
lineItem.DelegatesList.RemoveAt(i);
}
}
if (lineItem.DelegatesList.Count < newQuantity)
{
for (int z = 0; z <= newQuantity - initialCount; z++)
{
lineItem.DelegatesList.Add(new OrderDelegate());
}
}
await _basketRepository.SaveAsync();
}