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?