C#从array.sum中排除元素

use*_*195 0 c# arrays sum

求和时排除数组中元素的最简洁方法是什么?

例:

array.sum(exclude index 5);
Run Code Online (Sandbox Code Playgroud)

Mik*_*sen 8

而不是尝试构建临时数组或跳过该值,array[5]从总和中减去值可能更快:

array.Sum() - array[5]
Run Code Online (Sandbox Code Playgroud)


Ant*_*ony 5

如果您坚持使用LINQ,那么您可以使用TakeSkip.假设要忽略索引5处的项目,则需要索引0-4处的值,因此您获取前5个项目,然后使用第5个索引之后的项目进行连接,因此您跳过前6个项目.

array.Take(5).Concat(array.Skip(6)).Sum();
Run Code Online (Sandbox Code Playgroud)

更好的解决方案,正如Matt Burland在评论中指出的那样,Mike Christensen在他的回答中指出,是将整个列表相加并简单地减去你想忽略的单个值.

  • 你也可以这样做:`array.Select((x, i) => i == 5 ? 0 : x).Sum();` (3认同)