0
我有IEnumerable序列bids
其中每個元素都有卷字段。 如何使用Linq跳過聚合體積小於某個閾值skipVolume
的所有第一個元素?如何創建LINQ表達式?
所以像:
bids.SkipWhile(sum of (s=>s.volume) skiped < skipVolume)
我有IEnumerable序列bids
其中每個元素都有卷字段。 如何使用Linq跳過聚合體積小於某個閾值skipVolume
的所有第一個元素?如何創建LINQ表達式?
所以像:
bids.SkipWhile(sum of (s=>s.volume) skiped < skipVolume)
您可以使用where
條款,你都計算累積量和測試針對skipVlolume
:
var aggVolume = 0d;
var subBids = bids.Where(x => {
aggVolume += x.volume;
return aggVolume >= skipVolume;
})
LINQ是不是真的適合你的聚合計算,因爲你必須在某個點終止它(如果你確實真的很想,你可以使用Aggregate來返回它到達的索引,但是你會有一個帶有條件的醜陋lambda表達式)。我會首先找到使用傳統循環達到閾值的索引,然後使用該數字使用跳過/獲取(或僅填充該循環內的新集合)。 – moarboilerplate