2016-12-27 80 views
-1

使用foreach循環我有這樣與列表<>

public List<Application> all_roads = new List<Application>(); 

陣列和對象與字段:

public string point_of_distination; 
public uint length_of_route; 
public double price; 
public string our_drv_name; 
public string our_drv_surname; 
public string our_bus_model; 
public double gen_ticket_price; 
public short cur_year; 
public byte cur_day; 
public byte cur_month; 
public double tour_consumption; 

我想從所有對象計數的tour_consumption一般總和。 我該怎麼寫foreach這個循環? 請幫幫我。

+2

'的foreach(應用程序A在all_roads)' – Uriel

+0

謝謝你,Uriel Eli。你是對的! – Snorri

+0

有關如何向家庭作業尋求幫助,請參閱[本文](http://meta.programmers.stackexchange.com/questions/6166/open-letter-to-students-with-homework-problems)以供將來參考。 。 – EJoshuaS

回答

3

只是使用LINQ輕鬆很多:

var sum = all_roads.Sum(x => x.tour_consumption); 

如果你真的想用一個for循環:

double sum = 0; 
for(var i = 0; i < all_roads.Count; i++) 
{ 
    sum += all_roads[i].tour_consumption; 
} 

或foreach循環

double sum = 0; 
foreach (var app in all_roads) 
{ 
    sum += app.tour_consumption; 
} 
+0

您也可以在不顯式調用Select的情況下執行Sum(x - > x.tour_consumption)。 – EJoshuaS

+1

我認爲你的第二種情況'i <= all_roads.Count'會產生'索引超出範圍'異常。如果我錯了,你能證實並糾正我嗎? – kat1330

+0

是啊好電話...更新與改進和糾正內循環:)謝謝 –

3
double sum = 0; 
foreach (var item in all_roads) 
{ 
    sum += tour_consumption; 
} 
6

如果你只需要計算tour_consumption即可試試這個:

var sum = all_roads.Sum(x => x.tour_consumption); 

你不需要明確地選擇tour_consumption。您可以直接將lambda表達式傳遞給Sum()函數。

請參閱LINQ Sum()方法如何在以下article中使用。

如果您想要使用Sum()方法,請確保您包含System.Linq名稱空間。