У меня есть класс, определенный как
class P
{
public List<P> children;
public int Val1;
public int Val2;
}
Как видите, у класса есть список объектов того же класса.Я создаю экземпляр класса и заполняю список:
P myp = new P { children = new List<P> {new P {Val1 = 1, Val2 = 1}, new P {Val1 = 2, Val2 = 2}}};
Теперь, если я хочу суммировать значения дочерних полей и поместить их в соответствующее родительское поле, я могу сделать
foreach (var p in myp.children)
{
myp.Val1 += p.Val1;
myp.Val2 += p.Val2;
}
, который кажется эффективным, но уродливее, или я могу сделать
myp.Val1 = myp.children.Sum(p => p.Val1);
myp.Val2 = myp.children.Sum(p => p.Val2);
, который более читабелен, но повторяет список дважды.
Есть ли красивый И эффективный способ сделать это?Или я застрял на foreach?