gpt4 book ai didi

c# - 响应式扩展 .MaxBy

转载 作者:行者123 更新时间:2023-12-03 22:58:35 30 4
gpt4 key购买 nike

为什么

var a = Observable.Interval(TimeSpan.FromSeconds(1))
.Publish();

a.Subscribe(o =>
{
Console.WriteLine("Test");
});
a.Connect();

火,但不火

var a = Observable.Interval(TimeSpan.FromSeconds(1))
.MaxBy(o=>o)
.Publish();

a.Subscribe(o =>
{
Console.WriteLine("Test");
});
a.Connect();

我正在尝试在不同的场景中使用 MaxBy,但甚至无法使上述工作正常。

这是我更复杂的例子

var _telemetryBatchObservable = Observable.FromEventPattern<DeviceStateStreamEventArg>(
ev => DeviceStateStreamEvent += ev,
ev => DeviceStateStreamEvent -= ev)
.Synchronize()
.GroupBy(o => o.EventArgs.DeviceId)
.Select(o => o.MaxBy(i => i.EventArgs.DateTimeOffset))
.SelectMany(o => o.Select(i => i))
.SelectMany(o => o.Select(i => i))
.Buffer(TimeSpan.FromMilliseconds(5000), 100)
.Publish();

最佳答案

MaxMaxBy 仅在源可观察对象终止时发出单个值。如果你有一个非终止源,它们将永远不会发射。

尝试将此代码作为反例:

var a = Observable.Interval(TimeSpan.FromSeconds(1))
.Take(3) //causes termination after 3 values
.MaxBy(o => o)
.Publish();

关于c# - 响应式扩展 .MaxBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45840230/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com