我遇到了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
答案 0 :(得分:0)
您不希望在没有订单的情况下迭代集合,您希望按照从未遇到Recipe
的顺序迭代集合,除非所有成分都具有已经遇到过。
制定这样的订单会非常复杂,我认为最好避免这种做法。
我不会尝试编写C#代码,因为我对这门语言不太熟悉,但我认为你需要两个类,PrimitiveIngredient
和Recipe
。您需要一个方法,该方法需要Recipe
并生成PrimitiveIngredients
的列表及其金额。如果Recipe
本身是item
(而不是Recipe
),您可以通过迭代PrimitiveIngredient
项并递归调用该方法来编写此内容。