3 Stimmen

foreach vs. Summe für mehrere Felder

Ich habe eine Klasse definiert als

class P
{
        public List<P> children; 
        public int Val1;
        public int Val2;
}

Wie Sie sehen können, enthält die Klasse eine Liste von Objekten derselben Klasse. Ich instanziere die Klasse und fülle die Liste:

P myp = new P { children = new List<P> {new P {Val1 = 1, Val2 = 1}, new P {Val1 = 2, Val2 = 2}}};

Wenn ich nun die Werte der Kinderfelder summieren und in das entsprechende übergeordnete Feld einfügen möchte, kann ich Folgendes tun

foreach (var p in myp.children)
{
        myp.Val1 += p.Val1;
        myp.Val2 += p.Val2;
}

was effizient, aber hässlicher erscheint, oder ich kann

myp.Val1 = myp.children.Sum(p => p.Val1);
myp.Val2 = myp.children.Sum(p => p.Val2);

die besser lesbar ist, aber die Liste zweimal durchläuft.

Gibt es eine schöne UND effiziente Möglichkeit, dies zu tun? Oder bin ich mit der foreach stecken?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X