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