如何使用循环和条件执行oneliner代码?

时间:2015-07-15 05:27:44

标签: c# syntax foreach

我如何使这个oneliner代码?

int result = 0;
if (directory.Files.Count() > 0)
{
    foreach (var file in directory.Files)
    {
        result += file.FileCommits.Count() > 0 ? file.FileCommits.Last().LinesOfCode : 0;
    }
}
return result;

2 个答案:

答案 0 :(得分:7)

您正在做的是收集代码的总和。你可以使用Enumerable.Sum(在@ScottChamberlain的屈膝礼中进行了优化):

var sum = directory.Files.Sum(file => 
                              file.FileCommits.Select(commit => commit.LinesOfCode)
                                              .LastOrDefault())

答案 1 :(得分:0)

更简单的方法:

var sum = directory.Files.Where(file => file.FileCommits.Any())
                         .Sum(file => file.FileCommits.Last().LineOfCode);