A simple, general interface for building streaming push or pull-based computations based on "Streams à la carte: Extensible Pipelines with Object Algebras" [1].
I've provided a sample implementation of the core LINQ interface for push-based and pull-based streams.