System.Linq.Async
Async LINQ operators for IAsyncEnumerable to compose non-blocking data pipelines.
Decision Guide
LINQ in the BCL already covers many scenarios, but specialized libraries can improve async streaming, expressive operators, or dynamic query composition. Add them deliberately to avoid unreadable query chains and hidden complexity.
The decision to make
When should a .NET codebase add LINQ extension packages beyond the base class library?
Curated starting points to compare. Always evaluate suitability against your specific project requirements.
Async LINQ operators for IAsyncEnumerable to compose non-blocking data pipelines.
Large catalog of additional LINQ operators for sequence transforms and analysis.
Builds LINQ predicates and projections dynamically from strings or runtime expressions.
Start with BCL LINQ and introduce extension packages only when a repeated, well-understood gap exists. Document the chosen operators in team conventions so query intent stays obvious.
For remote providers such as EF Core, separate server-translated queries from in-memory sequence operations. Materialize deliberately and inspect generated SQL before adding complex operators.
Use cancellation with async streams, bound potentially unbounded sequences, and profile allocations for hot paths before optimizing operator chains.
Risk
Checklist
Revisit LINQ extensions when performance profiling shows query overhead, or when team readability and debugging costs outweigh operator convenience.