2

System.Reactive 的新手,但据我了解,我们可以订阅任何可观察的集合,如果那里发生了什么,我会收到通知。

但是当我正在寻找一个可以帮助我安排任务的框架时,如果只有一个已经充满数据的可观察集合,按时间过滤它们并让它们在某些条件匹配时立即引发 onnext 事件,那将是巨大的.

假设我们有课

Public Class Appointment
    Property Notification As DateTime
End Class

然后我们有 aList<IObservable>并订阅它,然后我们指定类似 a 的内容where,但不是在添加新内容时,而是在匹配内容时。在这种情况下,当前日期时间Now()和任何约会

src.WhenWhere(x => x.Notification < Now())

还是应该使用自定义的 observable 来完成?

4

1 回答 1

2

你可以做这样的事情......请注意,你必须在约会上放置一些标志来表示通知已发送并将其添加到 where 子句中,否则,一旦约会时间为 < DateTime.Now,它将一遍又一遍地发送结果。

void Main() {
    var appointments = new List<Appointment> { 
       new Appointment { Id = 1, Notification = DateTime.Now.AddMilliseconds(4000) },
       new Appointment { Id = 2, Notification = DateTime.Now.AddMilliseconds(7000) }
    };

    var q = from t in Observable.Generate(DateTime.Now, _ => true, _ => _, _ => DateTime.Now, _ => TimeSpan.FromSeconds(1))
        from a in appointments
        where a.Notification < t
        select new { a.Id, a.Notification };

q.Dump();

}

public class Appointment {
    public int Id { get; set; }
    public DateTime Notification { get; set; }
}
于 2013-01-02T21:34:22.577 回答