找到合适的产品ID后走出foreach

时间:2016-11-17 10:16:26

标签: c# foreach

我们的每个产品都基于某个categoryID

在循环我们的产品时,它必须首先找到该类别中的产品(它所做的),然后逐步退出。问题在于,当它第一次经历foreach(寻找正确的产品)时它没有走出去,它只是不断地通过它找到剩余的产品与其他categoryIDs。

我们如何解决这个问题?

(我们正在使用C# - 实体框架 - MSSQL)

干杯!

public ActionResult Index(int id)
    {
        var m = new Models.Product.Index();

        //m.DisplayName = "Produkter";
        //var scp = db.SCPconnection.FirstOrDefault(s => s.CategoryID == id);
        //if (id == scp.ProductID)
            {

            foreach (var item in db.Product.OrderBy(p => p.ProductName))
            {
                var mp = new Models.Product.ModelProduct();
                mp.SectorName = item.ProductName;
                mp.ProductID = item.ProductID;
                mp.DetailsUrl = item.Details;
                m.AllProducts.Add(mp);
            }
        }
        return View(m);
    }

3 个答案:

答案 0 :(得分:2)

打破它。

        foreach (var item in db.Product.OrderBy(p => p.ProductName))
        {
            var mp = new Models.Product.ModelProduct();
            mp.SectorName = item.ProductName;
            mp.ProductID = item.ProductID;
            mp.DetailsUrl = item.Details;
            m.AllProducts.Add(mp);

            if(condition) //if it is needed
               break;
        }

答案 1 :(得分:1)

最好使用特定ID的Where子句进行过滤。

我强烈建议优化代码,为什么需要将所有产品详细信息都提供给业务逻辑,而不是查询条件所需的内容。

foreach (var item in db.Product.Where(p => p.ProductID.Equals(requiredID)).OrderBy(p => p.ProductName))
    {
        var mp = new Models.Product.ModelProduct();
        mp.SectorName = item.ProductName;
        mp.ProductID = item.ProductID;
        mp.DetailsUrl = item.Details;
        m.AllProducts.Add(mp);
    }

答案 2 :(得分:0)

break关键字会立即退出foreach。中断后的代码和剩余的迭代项目将不会被处理。

public ActionResult Index(int id)
{
    var m = new Models.Product.Index();

        foreach (var item in db.Product.OrderBy(p => p.ProductName))
        {
            var mp = new Models.Product.ModelProduct();
            mp.SectorName = item.ProductName;
            mp.ProductID = item.ProductID;
            mp.DetailsUrl = item.Details;
            m.AllProducts.Add(mp);

           if (item.ProductID == id) 
               break;
        }
    }
    return View(m);
}