2013-11-26 44 views
-5

我有两个'foreach'循环抛出错误告诉我,我无法将Student.FoodItem转换为双精度。我难以理解我做错了什么,这里是循环。它为什么要转换? c#

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; 
+0

什么是totalDrink的类型? – nphx

+6

为什么在你不使用它们的值时迭代集合? – nphx

+0

本代码中的食物项目在哪里? – techloverr

回答

2

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

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

你的第一个循环应该是这样的:

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

你通过FoodItems的集合,而不是成本的集合循环。

3

这可能更优雅的使用LINQ来完成:

totalFood = Order.OrderedFood.Sum(x => x.Cost); 
totalDrink = Order.OrderedDrink.Sum(x => x.Cost); 
相关问题