Похоже, вам не хватает открытой скобки после ключевого слова else
. Я предполагаю, что в вашем случае был вопрос, а не ваш код, поскольку , как он сейчас стоит, этот код не будет компилироваться из-за несогласованных брекетов.
Если вы положили отсутствующую фигурную скобку, то вы набираете из цикла foreach
на первой итерации, имеет ли первый продукт соответствующий идентификатор или нет.
Если вы настроены на использование foreach
, то вы, вероятно, хотите что-то вроде:
var productFound = false;
foreach (Product item in listOfProducts)
{
if (item.Id == id)
{
productFound = true;
item.UnitInStocks = unitsInStocks;
item.Price = price;
Console.WriteLine("the product details has been changed");
break;
}
}
if (!productFound)
{
Console.WriteLine("this product id does not exist");
}
Я предпочел бы избежать foreach
все вместе:
var product = listOfProducts.FirstOrDefault(prod => prod.Id == id);
if (product != null)
{
product.UnitInStocks = unitsInStocks;
product.Price = price;
Console.WriteLine("the product details has been changed");
}
else
{
Console.WriteLine("this product id does not exist");
}
Вам нужно using System.Linq;
на В верхней части файла используется FirstOrDefault
.
Покажите нам, как вы читаете ID. Что означает «все еще идет вперед»? Пожалуйста, опишите, что происходит, что он должен делать, и шаги, которые вы предприняли, чтобы сузить проблему. Откуда приходит идентификатор? Что такое «Продукт»? какой тип 'item.Id'? Здесь много неизвестных, и моя программа с волшебным экраном, похоже, не может видеть ваш компьютер. –
Также, пожалуйста, отправьте код, который выглядит несколько правильно - это 'break;' вне любого цикла не имеет смысла в текущем примере кода. –
@AlexeiLevenkov Мне было интересно то же самое. Его либо петля внутри другого, либо он пропустил {после else ... – Prix