IE可枚举到可观察间隔
本文关键字:观察 枚举 IE | 更新日期: 2023-09-27 18:33:40
为了每 5 秒生成一个"度量",我正在做这样的事情:
var Events = Observable.
Interval(TimeSpan.FromSeconds(5)).
Select(i => factory.GenerateRandomMeasure())
我想做同样的事情,但基于现有的度量集合。我假设我必须做这样的事情:
var Events = existingList.ToObservable();
但是,是否可以添加一个间隔概念来获取具有间隔的每个列表项?(例如,每 5 秒一个项目)
您可以执行以下任一操作:
(1)
var Events =
Observable
.Interval(TimeSpan.FromSeconds(5))
.Zip(existingList, (i, x) => x)
.Select(i => factory.GenerateRandomMeasure());
(二)
var Events2 =
Observable
.Generate(
0,
x => x < existingList.Count,
x => x + 1,
x => existingList[x],
x => TimeSpan.FromSeconds(5))
.Select(i => factory.GenerateRandomMeasure());
第一个可能更明智,更容易写。如果您还不知道第二个非常值得学习,因为它非常强大.Generate
可以在很多地方使用。