假设:
foreach (var obj in _data)
{
maxRows++;
foreach (var param in obj.Parameters)
maxRows++;
}
我正在尝试将其转换为(最好)单个语句。特别是没有任何理由,只是好奇,如果可能的话,很容易进行精神上的解析,并且如果可能的话。
_data.ForEach(feObj => maxRows++);
_data.ForEach(feObj => feObj.Parameters.ForEach(feParam => maxRows++));
这似乎完成了同样的事情,尽管由于在额外的时间内迭代_data,它似乎效率低于原始效果。
有没有办法将两个单独行中的两个动作合并为一个声明?
答案 0 :(得分:10)
你可以拿下总和:
maxRows += _data.Sum(obj => 1 + obj.Parameters.Count())
答案 1 :(得分:4)
您可以在同一循环中执行此操作。
_data.ForEach(feObj =>
{
maxRows++;
feObj.Parameters.ForEach(feParam => maxRows++);
});
此外,如果你只是添加计数,你应该像@Rob回答的那样。如果有任何其他逻辑,你可以把它放在括号内。