将foreach循环重构为List <T> .ForEach(...)

Kri*_*ner 2 c# foreach list

鉴于:

foreach (var obj in _data)
{
    maxRows++;
    foreach (var param in obj.Parameters)
        maxRows++;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将其转换为(最好)单个语句.不是出于任何原因,特别好奇,如果它很容易在精神上解析,如果可能的话.

_data.ForEach(feObj => maxRows++);
_data.ForEach(feObj => feObj.Parameters.ForEach(feParam => maxRows++));
Run Code Online (Sandbox Code Playgroud)

这似乎完成了同样的事情,尽管由于在额外的时间内迭代_data,它似乎效率低于原始效果.

有没有办法将两个单独行中的两个动作合并为一个声明?

Rob*_*Rob 10

你可以拿出总和:

maxRows += _data.Sum(obj => 1 + obj.Parameters.Count())
Run Code Online (Sandbox Code Playgroud)