2016-12-27 4 views
-1

Ich habe ein Array wie dieseMit foreach-Schleife mit List <>

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

Und ein Objekt mit Feldern:

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; 

I allgemeine Summe von tour_consumption von allen Objekten zählen möchte. Wie soll ich foreach Schleife dafür schreiben? Bitte, hilf mir.

+2

'foreach (Application a in all_roads)' – Uriel

+0

Danke, Uriel Eli. Du hast recht! – Snorri

+0

Für zukünftige Referenz lesen Sie bitte [diesen Artikel] (http://meta.programmers.stackexchange.com/questions/6166/open-letter-to-students-with-homework-problems), wie Sie um Hilfe bei den Hausaufgaben bitten können . – EJoshuaS

Antwort

3

Seien Sie viel einfacher, nur mit Linq:

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

Wenn Sie wirklich ein verwenden für Schleife gesucht:

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

oder foreach-Schleife

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

Sie können auch Sum (x -> x.tour_consumption) ohne expliziten Aufruf von Select ausführen. – EJoshuaS

+1

Ich denke, dass Ihr zweiter Fall mit 'i <= all_roads.Count 'die Ausnahme' index out of range 'erzeugt. Können Sie das bitte überprüfen und mich korrigieren, wenn ich falsch liege? – kat1330

+0

Yeah good call ... mit Verbesserungen und Korrekturen innerhalb von for loop aktualisiert :) danke –

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

Wenn Sie wollen nur tour_consumption berechnen können Sie versuchen Sie dies:

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

Sie brauchen nicht tour_consumption explizit auszuwählen. Sie können den Lambda-Ausdruck direkt an die -Funktion übergeben.

Bitte lesen Sie, wie LINQ Sum() Methode funktioniert in folgenden article.

Auch stellen Sie bitte sicher, dass Sie System.Linq Namespace enthalten, wenn Sie Sum() Methode verbrauchen möchten.

Verwandte Themen