我的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;
}

我的foreach不起作用

看起来您在else关键字后缺少一个左大括号。我假设这是您的问题中的错误而不是您的代码,因为就目前而言,由于大括号不匹配,该代码将无法编译。

如果您输入缺少的大括号,则无论第一个产品是否具有匹配的 id,您都将在第一次迭代中breakforeach循环。

如果您打算使用 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