tags:

views:

44

answers:

1

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?

+6  A: 
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.

mquander
You missed a .Select(x=>x.TheValue) before the summing.
spender
My bad. Fixed it.
mquander
ah. Ok. More concise. Good!
spender