如何创建LINQ表达式?
我有一个可数的如何创建LINQ表达式?,linq,Linq,我有一个可数的bids序列每个元素都有volume字段。 如何使用Linq跳过所有第一个元素,这些元素的聚合体积小于某个tresholdskipVolume 就像: bids.SkipWhile( sum of (s=>s.volume) skiped < skipVolume) bids.SkipWhile(跳过的(s=>s.volume)之和
bids序列
每个元素都有volume字段。
如何使用Linq跳过所有第一个元素,这些元素的聚合体积小于某个tresholdskipVolume
就像:
bids.SkipWhile( sum of (s=>s.volume) skiped < skipVolume)
bids.SkipWhile(跳过的(s=>s.volume)之和
您可以使用where
子句,在该子句中,您可以计算累积体积并根据skipvollume
进行测试:
var aggVolume = 0d;
var subBids = bids.Where(x => {
aggVolume += x.volume;
return aggVolume >= skipVolume;
})
LINQ并不真正适合于聚合计算,因为您必须在某个点终止它(如果您真的想终止它,您可以使用聚合返回到达它的索引,但您会有一个丑陋的lambda表达式,其中包含条件)。我将首先找到传统循环达到阈值的索引,然后使用该数字使用skip/take(或者只是在该循环中填充一个新集合)。