我的foreach没有用

时间:2015-11-10 02:03:37

标签: c#

在使用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;
}

1 个答案:

答案 0 :(得分:2)

else关键字后,您似乎缺少一个开放式大括号。 我假设你的问题是错误而不是你的代码,因为 就目前而言,由于大括号不匹配,代码将无法编译。

如果你输入了缺失的大括号,那么你在第一次迭代中break退出foreach循环,第一个产品是否具有匹配的id。

如果您已开始使用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