声明:本文是《C#并发编程经典实例》的样章,感谢图灵授权并发编程网站发布样章,禁止以任何形式转载此文。
LINQ 是 对 序 列 数 据 进 行 查 询 的 一 系 列 语 言 功 能。 内 置 的 LINQ to Objects( 基 于 IEnumerable<T>) 和 LINQ to Entities( 基 于 IQueryable<T>) 是 两 个 最 常 用 的 LINQ 提 供 者。另外还有很多提供者,并且大多数都采用相同的基本架构。查询是延后执行(lazily evaluated)的,只有在需要时才会从序列中获取数据。从概念上讲,这是一种拉取模式。 在查询过程中数据项是被逐个拉取出来的。
Reactive Extensions(Rx)把事件看作是依次到达的数据序列。因此,将 Rx 认作是 LINQ to events( 基 于 IObservable<T>) 也 是 可 以 的, 它 与 其 他 LINQ 提 供 者 的 主 要 区 别 在 于, Rx 采用“推送”模式。就是说,Rx 的查询规定了在事件到达时程序该如何响应。Rx 在 LINQ 的基础上构建,增加了一些功能强大的操作符,作为扩展方法。
本章介绍一些更常用的 Rx 操作。需要注意的是,所有的 LINQ 操作都可以在 Rx 中使用。 从概念上看,过滤(Where)、投影(Select)等简单操作,和其他 LINQ 提供者的操作是 一样的。本章不介绍那些常见的 LINQ 操作,而将重点放在 Rx 在 LINQ 基础上增加的新 功能,尤其是与时间有关的功能。
要使用 Rx,需要在应用中安装一个 NuGet 包 Rx-Main。支持 Reactive Extensions 的平台非 常丰富。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/120476.html