我的foreach不起作用
本文关键字:不起作用 foreach 我的 | 更新日期: 2023-09-27 18:21:13
在这段使用foreach
的代码中,即使我键入列表中不存在的id,它仍然会继续。为什么会发生这种情况,我该如何解决?
foreach (Product item in listOfProducts)
{
if (item.Id == id)
{
item.UnitInStocks = unitsInStocks;
item.Price = price;
Console.WriteLine("the product details has been changed");
Console.ReadLine();
}
else
Console.WriteLine("this product id does not exist");
}
break;
}
看起来您在else
关键字后缺少一个左大括号。我假设这是您的问题中的错误而不是您的代码,因为就目前而言,由于大括号不匹配,该代码将无法编译。
如果您输入缺少的大括号,则无论第一个产品是否具有匹配的 id,您都将在第一次迭代中break
出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
。