JMarsch
JMarsch

Reputation: 21751

Linqify this: Aggregate a subset of a list

Suppose I have a list or array of items, and I want to sum a subset of the items in the list. (in my case, it happens to always be a sequential subset).

Here's the old-fashioned way:


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

What's the best way to linqify that code?

Upvotes: 3

Views: 381

Answers (1)

mqp
mqp

Reputation: 71985

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

If I were doing this sort of thing a lot, I'd define a helper TakeRange that covered the Skip and Take so that I didn't off-by-one it.

Upvotes: 6

Related Questions