Expresso.Rendering.Linq 0.12.1

dotnet add package Expresso.Rendering.Linq --version 0.12.1
                    
NuGet\Install-Package Expresso.Rendering.Linq -Version 0.12.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Expresso.Rendering.Linq" Version="0.12.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Expresso.Rendering.Linq" Version="0.12.1" />
                    
Directory.Packages.props
<PackageReference Include="Expresso.Rendering.Linq" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Expresso.Rendering.Linq --version 0.12.1
                    
#r "nuget: Expresso.Rendering.Linq, 0.12.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Expresso.Rendering.Linq@0.12.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Expresso.Rendering.Linq&version=0.12.1
                    
Install as a Cake Addin
#tool nuget:?package=Expresso.Rendering.Linq&version=0.12.1
                    
Install as a Cake Tool

Expresso

GitHub repository

Expresso is a .NET library for dynamic filtering and sorting. It parses a function-call query string into a validated expression tree, then renders the tree as parameterized SQL or as LINQ. It replaces hand-written WHERE and ORDER BY string concatenation, and piles of optional Where clauses, with one tested pipeline.

Query string → Expresso.Parsing → expression tree (Expresso.Core) ─┬→ SQL renderer (one per dialect) → SQL + parameters
                                                                   └→ LINQ renderer (Linq, EF Core, EF6) → predicate + sort keys

Target frameworks: netstandard2.0 and net6.0 for the core, parsing, SQL and LINQ packages (usable from .NET Framework 4.6.1+, .NET Standard 2.0 libraries and .NET 6+). The EF Core package targets net8.0, and the EF6 package targets net48. License: MIT.

Example

A client sends a filter and a sort:

gt(createdAt,"2021-01-01")
createdAt,desc,name,asc

With a field map that sends createdAt to p.created_at and the parameter prefix wparam, each SQL renderer produces the same condition in its own dialect:

Dialect Rendered filter
SQL Server ([p].[created_at] > @wparam_0)
PostgreSQL ("p"."created_at" > @wparam_0)
MySQL, MariaDB (`p`.`created_at` > @wparam_0)
Oracle ("p"."created_at" > :wparam_0)

The LINQ renderers produce a lambda instead, which EF Core or EF6 translates to SQL:

e => e.CreatedAt > p0

The grammar, literal rules and supported types are in Query syntax.

Packages

Package Role
Expresso.Core Expression tree, filter, sort, and paging models, field-catalog contract
Expresso.Parsing Filter, sort, and paging text parsers and dependency injection
Expresso.Rendering.Common Shared SQL rendering contract
Expresso.Rendering.SqlServer, PostgreSql, Sqlite, MySql, Oracle, Db2 Filter, sort, and paging clause rendering for one dialect
Expresso.Rendering.Linq LINQ filtering, sorting, and result limits for IQueryable<T> and in-memory collections
Expresso.Rendering.EntityFrameworkCore EF Core 8+ overrides, IncludeSorted, and provider-aware paging
Expresso.Rendering.EntityFramework EF6 overrides and provider-aware paging

There is no metapackage: reference the packages you need. Database drivers and native clients are not included (DB2 needs IBM's clidriver on the host). See Packages.

Documentation

New to Expresso? Start with the overview, then Get started.

Samples

The ADO pair shares samples/Expresso.Sample.Shared. The EF pair is standalone (same routes and ExpressoSample:Engine, no Shared reference). Schema and seed: samples/database. See Sample app.

Build from source

dotnet test .\Expresso.slnx -c Release -f net6.0 --filter "Category!=Integration"
dotnet test .\Expresso.slnx -c Release -f net48 --filter "Category!=Integration"    # Windows; validates .NET Framework consumers
dotnet pack .\Expresso.slnx -c Release -o .\artifacts

Tests that need a running database engine skip unless EXPRESSO_IT=1. See test/Rendering/Expresso.Rendering.Integration.Test/README.md.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Expresso.Rendering.Linq:

Package Downloads
Expresso.Rendering.EntityFrameworkCore

Render Expresso filters and sorts to EF Core predicates and sort keys, with provider overrides so results match the Expresso SQL renderers.

Expresso.Rendering.EntityFramework

Render Expresso filters and sorts to Entity Framework 6 predicates and sort keys, using canonical DbFunctions so results match the Expresso SQL renderers.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.12.1 46 10/9/2026
0.11.0 46 10/8/2026
0.10.0 52 10/7/2026