将其转化为 LINQ:聚合列表的子集

3
假设我有一个项目列表或数组,我想对列表中的一部分进行求和(在我的情况下,它总是连续的子集)。
以下是老式的方法:

int sum = 0;
for(int i = startIndex; i <= stopIndex; i++)
  sum += myList[i].TheValue;
return sum;

使用 LINQ,最佳做法是什么?
1个回答

6
myList.Skip(startIndex).Take(stopIndex - startIndex + 1).Sum(x => x.TheValue);

如果我经常需要做这种事情,我会定义一个帮助函数TakeRange来覆盖SkipTake,这样我就不会出现偏移一个的错误。

在求和之前,你漏掉了一个 .Select(x=>x.TheValue)。 - spender

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接