Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.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
C# 在基于接收计数的聚合中,重置计数高于最大时间间隔 无时间限制的基于计数的筛选 如何引入不活动重置?_C#_.net_Linq_System.reactive - Fatal编程技术网

C# 在基于接收计数的聚合中,重置计数高于最大时间间隔 无时间限制的基于计数的筛选 如何引入不活动重置?

C# 在基于接收计数的聚合中,重置计数高于最大时间间隔 无时间限制的基于计数的筛选 如何引入不活动重置?,c#,.net,linq,system.reactive,C#,.net,Linq,System.reactive,但是,如何引入超时TimeSpan tooLong,以便当两个值之间的间隔超过此最大值时,计数将从零重新开始?我想这就是您想要的 var longGap = source.Throttle(tooLong); var filtered = source .Window(() => { return longGap; }) // Gives a window between every longGap .Select(io => io.Buffer(maxItems).Whe


但是,如何引入超时
TimeSpan tooLong
,以便当两个值之间的间隔超过此最大值时,计数将从零重新开始?

我想这就是您想要的

var longGap = source.Throttle(tooLong);
var filtered = source
  .Window(() => { return longGap; })  // Gives a window between every longGap
  .Select(io => io.Buffer(maxItems).Where(l => l.Count == maxItems))
  .Switch();  // Flattens the IObservable<IObservable<IList>> to IObservable<IList>
var longGap=source.Throttle(tooLong);
过滤变量=源
.Window(()=>{return longGap;})//在每个longGap之间提供一个窗口
.Select(io=>io.Buffer(maxItems)。其中(l=>l.Count==maxItems))
.Switch();//将IObservable展平为IObservable

如果右侧不表示表达式的返回类型,则不应使用var。@sweaver2112我不同意您的说法。关于这一点,没有硬性规定(风格指南或其他)。@AndersonImes:滥用var会降低代码的可读性,并增加下一个家伙的理解时间-你不同意吗?@Swaver2112 for Rx我认为该类型不会真正为你提供太多信息、过滤器、位置、油门等。。。尽管语义发生了完全的变化,但它们都保持相同的类型。@sweaver2112:当然,但它有自己的位置。例如,如果执行返回匿名类型的表达式。知道
myStuff.Select(thing=>new{Name=thing.Name,Color=thing.Color})
属于
IEnumerablegood问题、有趣的主题、图像。。。唯一缺少的是一个徒手画的圆圈。
var longGap = source.Throttle(tooLong);
var filtered = source
  .Window(() => { return longGap; })  // Gives a window between every longGap
  .Select(io => io.Buffer(maxItems).Where(l => l.Count == maxItems))
  .Switch();  // Flattens the IObservable<IObservable<IList>> to IObservable<IList>