为什么它试图转换?c#

为什么它试图转换?c#,c#,foreach,double,C#,Foreach,Double,我有两个“foreach”循环,它们抛出错误,告诉我无法将Student.FoodItem转换为double。我很困惑我做错了什么,下面是循环 foreach (double cost in Order.OrderedFood) { totalFood += Food.Cost; } foreach (double cost in Order.OrderedDrink) { totalDrink

我有两个“foreach”循环,它们抛出错误,告诉我无法将Student.FoodItem转换为double。我很困惑我做错了什么,下面是循环

 foreach (double cost in Order.OrderedFood)
        {
            totalFood += Food.Cost;
        }

 foreach (double cost in Order.OrderedDrink)
        {
            totalDrink += Drink.Cost;
        }

 double totalFood = 0.0;
 double totalDrink = 0.0;

因为您已经将迭代器变量声明为
double
。你的意思可能是这样的:

foreach (FoodItem food in Order.OrderedFood)
{
    totalFood += food.Cost;
}

您的第一个循环应该类似于:

foreach (FoodItem foodItem in Order.OrderedFood)
{
    totalFood += foodItem.Cost;
}

您正在循环浏览一个FoodItems集合,而不是成本集合。

这可以使用LINQ更优雅地完成:

totalFood = Order.OrderedFood.Sum(x => x.Cost);
totalDrink = Order.OrderedDrink.Sum(x => x.Cost);

totalDrink的类型是什么?为什么在不使用集合值的情况下迭代集合?此代码中的食物项目在哪里?我建议在完成课堂作业之前先研究一下。