使用 Observable.SelectMany忽略源集合中除最新项之外的所有项



给定

// observable getting files in folder as they are created
IObservable<string> files = GetFilesAsTheyAreCreated();

和功能

// gets lines of the file as they are written
IObservable<string> GetLines(string filePath)
我想创建返回

写入上次创建文件的行的可观察量。随着新文件的创建,我想开始从该文件中获取行。现在我有以下代码:

var lines = files.SelectMany(f => GetLines(f));

这样做的问题是我也将所有行添加到旧文件中。有没有办法忽略那些老台词?

注意:我最感兴趣的是取消可观察GetLines因为它在新线程上运行。

这可以通过内置运算符实现吗?

你需要的非常简单:

var lines = files.Select(f => GetLines(f)).Switch();

.Switch()运算符通过仅返回最新的外部可观察值的内部值,将IObservable<IObservable<T>>转换为IObservable<T>。正是你想要的。

相关内容

  • 没有找到相关文章

最新更新