通过没有订单的集合迭代

时间:2015-10-09 16:40:41

标签: c# collections foreach

我遇到了C#问题,希望你能帮助我。

我试图找到一种方法来接触没有订单的集合的所有元素,即。同时。

 //We are in the Planification Class

public void AddProduct(ProductFinal product, DateTime date, double quantity)
    {
        if (planificationLines== null)
        {
            planificationLines= new List<planificationLine>();
        }
        PlanificationLine planificationLine= new PlanificationLigne(this, product, date, quantity);
        planificationLines.Add(planificationLine);
        ProcessPlanification(planificationLine);
    }

    public void ProcessPlanification(PlanificationLine planificationLine)
    {


        //Load all recipes
        List<Recipes> listeFT = LoadAllRecipes().ToList();


        //Change the Quantity to produce of the FinalProduct ordered in planificationLine
        planificationLine.Product.QuantityToProduce+= planificationLine.QuantityToProduce;

//Compute QuantityToProduce for others 
foreach (Recipe FT in listeFT)
        { 
            foreach (RecipeLine item in FT.Ingredients)
            {
                item.Product.QuantityToProduce += FT.ResultProduct.Quantity* item.Proportion;
            }
        }

但是在这里,我们猜测我有2个食谱,其中一个使用另一个食谱: 例如: FinishedChicken(95%的咸鸡肉,5%的秘方) SaltedChicken(95%的鸡肉,5%的盐)。 让我们说我计划10公斤的FinishedChicken: 如果在foreach语句中,SaltedChicken排在第一位,它将把鸡的QuantitytoProduce固定为0,当它应该是10 * 0.95 * 0.95时。

我希望我已经清楚了,如果没有,请问。 你有什么主意吗? THX

1 个答案:

答案 0 :(得分:0)

您不希望在没有订单的情况下迭代集合,您希望按照从未遇到Recipe的顺序迭代集合,除非所有成分都具有已经遇到过。

制定这样的订单会非常复杂,我认为最好避免这种做法。

我不会尝试编写C#代码,因为我对这门语言不太熟悉,但我认为你需要两个类,PrimitiveIngredientRecipe。您需要一个方法,该方法需要Recipe并生成PrimitiveIngredients的列表及其金额。如果Recipe本身是item(而不是Recipe),您可以通过迭代PrimitiveIngredient项并递归调用该方法来编写此内容。