C# 如何在C中提取当前可观察的IObservable字段#
考虑到我对C#和与IObservable行话相关的行话还不熟悉。 我有一个问题,关于如何从当前数据中提取信息。这是我的c#代码: 有没有一种简单的方法可以从当前表示中提取x、Id和Level的值C# 如何在C中提取当前可观察的IObservable字段#,c#,sql,system.reactive,streaminsight,C#,Sql,System.reactive,Streaminsight,考虑到我对C#和与IObservable行话相关的行话还不熟悉。 我有一个问题,关于如何从当前数据中提取信息。这是我的c#代码: 有没有一种简单的方法可以从当前表示中提取x、Id和Level的值 谢谢你不就是想做这样的事吗 var query = from le in ToObservableInterval(items, timeSpan, scheduler) select le.ServerName; 神秘性已经回答了这个问题,但是,我认为应该指出的是,当你可以使用Obs
谢谢你不就是想做这样的事吗
var query =
from le in ToObservableInterval(items, timeSpan, scheduler)
select le.ServerName;
神秘性已经回答了这个问题,但是,我认为应该指出的是,当你可以使用
Observable.Interval
和Zip
操作符来完成这项工作时,你可能不需要投入太多精力
下面是一个脚本,您可以使用它来查看,随着时间的推移,它只会从IEnumerable
中提取值
void Main()
{
//GetNumbers().Dump();
var period = TimeSpan.FromSeconds(1);
var scheduler = Scheduler.Default;
var source = GetNumbers();
Observable.Interval(period, scheduler)
.Zip(source, (a,b)=>b)
.Dump();
}
// Define other methods and classes here
public IEnumerable<int> GetNumbers()
{
var i = 0;
while (i<10)
{
DateTimeOffset.Now.ToString("o").Dump();
yield return i++;
}
}
然后按照上面的答案消费
由于这种方法很小,你甚至可能会问你是否需要它?你能解释一下你想解决什么问题吗?似乎您只想观察可枚举流中的值,每个值之间有一个小的延迟,您可以使用:
enumerableSequence.ToObservable().delay(period,scheduler)
var query =
from le in ToObservableInterval(items, timeSpan, scheduler)
select le.ServerName;
void Main()
{
//GetNumbers().Dump();
var period = TimeSpan.FromSeconds(1);
var scheduler = Scheduler.Default;
var source = GetNumbers();
Observable.Interval(period, scheduler)
.Zip(source, (a,b)=>b)
.Dump();
}
// Define other methods and classes here
public IEnumerable<int> GetNumbers()
{
var i = 0;
while (i<10)
{
DateTimeOffset.Now.ToString("o").Dump();
yield return i++;
}
}
private static IObservable<T> ToObservableInterval<T>(
IEnumerable<T> source,
TimeSpan period,
System.Reactive.Concurrency.IScheduler scheduler)
{
return Observable.Interval(period, scheduler)
.Zip(source, (a,b)=>b);
}