Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建LINQ表达式?_Linq - Fatal编程技术网

如何创建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跳过所有第一个元素,这些元素的聚合体积小于某个treshold
skipVolume

就像:

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(或者只是在该循环中填充一个新集合)。