Using Reactive Extensions for Streaming Data from Database
How to use Reactive Extensions (Rx) in .NET to run a slow database query in the background and load the results into a grid in chunks.

I’m a backend engineer and software architect with 17+ years of .NET, mostly in banking and fintech: payment and transaction processing, public APIs, and the internal platforms other teams build on. I’ve led teams and a platform unit, and I stay hands-on in the code, increasingly through AI coding agents like Claude Code and Codex.
Alongside that, I build open-source .NET libraries and developer tools with 44M+ NuGet downloads: DuckDB.NET, EntityFramework.Exceptions, EFCore.Visualizer and others. That work sits where .NET meets the database: native interop, Native AOT extensions for DuckDB and PostgreSQL, and tooling that makes query plans easier to debug. I also speak about .NET and databases at conferences like NDC, KCDC and .NET Conf.
How to use Reactive Extensions (Rx) in .NET to run a slow database query in the background and load the results into a grid in chunks.
Part 3 of the series: adding support for variables to the C# expression evaluator with Expression.Parameter and compiled lambdas.
Part 2 of the series: rewriting the C# expression evaluator with the shunting-yard algorithm and adding support for parentheses.
Part 1 of the series: a basic mathematical expression evaluator in C# built with expression trees, developed test by test.
Table of contents for a four-part series on building a mathematical expression evaluator in C# with expression trees.
An improved DynamicViewState for ASP.NET Web Forms: fully compatible with StateBag, available as a NuGet package, with performance benchmarks.
How to build a ViewBag-style dynamic wrapper around ViewState in ASP.NET Web Forms with DynamicObject, so you can drop string keys and casts.
Tips for handling the AppDomain.AssemblyResolve event in .NET: parsing assembly names, handling repeated calls and avoiding FileNotFoundException.
Build a Silverlight out-of-browser slideshow that responds to a remote control and Windows 7 taskbar buttons with Native Extensions for Silverlight.
Process.MainModule.FileName throws for elevated processes. Here is how to get the process path in .NET with QueryFullProcessImageName instead.
Process.StartTime and Process.HasExited throw an access denied Win32Exception for elevated processes. Here is why it happens and how to work around it.