如何在活动扩展C#中将IObserable <bool>转换为bool

Bha*_*a K 3 c# wpf system.reactive

我想检查是否System.Reactive.IObserable<TElement>包含任何元素.该Any()扩展方法没用,因为它期待返回IObserable<bool>,而不只是布尔的.

Tim*_*lds 11

IObservable<bool> IObservable<T>.Any()延伸方法是不是无用的:它得到其发射可观察到的bool尽快指示源可观察是否发射的任何值或没有.发生以下两个事件之一时会发生这种情况:

  • 源序列发出OnCompleted.在这种情况下,它不会发出任何值,因此Any序列会发出OnNext(false)然后发出OnCompleted.

  • 源序列发出OnNext.所以Any顺序发出OnNext(true)然后OnCompleted.

如果你想要一个bool而不是一个IObservable<bool>for结果,你可以在一个上下文中awaitAnyobservable async.

    IObservable<Prizes> prizes = ...;
    bool winner = await prizes.Any();
Run Code Online (Sandbox Code Playgroud)