2010-05-19 53 views
3

假設我有一個列表或項目數組,並且我想對列表中的項目的一個子集求和。 (在我的情況下,它恰好總是一個順序子集)。Linqify this:彙總列表的一個子集

這裏是老式的方法:

 

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

什麼是linqify代碼的最佳方式?

回答

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

如果我在做這樣的事情很多,我會定義一個幫手TakeRange涵蓋了SkipTake讓我沒有關閉的情況的一個吧。

+0

您錯過了。在求和之前選擇(x => x.TheValue)。 – spender 2010-05-19 22:35:33

+0

我的不好。修復。 – mquander 2010-05-19 22:36:02

+0

啊。好。更簡潔。好! – spender 2010-05-19 22:36:41