Expresso.Core
0.8.0
dotnet add package Expresso.Core --version 0.8.0
NuGet\Install-Package Expresso.Core -Version 0.8.0
<PackageReference Include="Expresso.Core" Version="0.8.0" />
<PackageVersion Include="Expresso.Core" Version="0.8.0" />
<PackageReference Include="Expresso.Core" />
paket add Expresso.Core --version 0.8.0
#r "nuget: Expresso.Core, 0.8.0"
#:package Expresso.Core@0.8.0
#addin nuget:?package=Expresso.Core&version=0.8.0
#tool nuget:?package=Expresso.Core&version=0.8.0
Expresso
Expresso is a small .NET library for dynamic filtering and sorting. A function-call query string is parsed into a validated expression tree, then rendered to parameterized SQL (SQL Server in v1) — a safer alternative to hand-rolling dynamic WHERE / ORDER BY string concatenation.
Query string → Expresso.Parsing → expression tree (Expresso.Core) → Expresso.Rendering.SqlServer → SQL + parameters
Target frameworks: netstandard2.0 and net6.0 (usable from .NET Framework 4.6.1+, .NET Standard 2.0 libraries, and .NET 6+).
License: MIT.
Packages
| Package | Role |
|---|---|
Expresso.Core |
Expression tree, filter/sort models, field-catalog contract |
Expresso.Parsing |
Query-string parsers + DI |
Expresso.Rendering.SqlServer |
SQL Server WHERE / ORDER BY rendering + DI |
There is no metapackage in v1 — reference the packages you need. See docs/packages.md for what each package contains and which application layer typically references it.
Example
Filter (boolean expression required):
gt(createdAt,"2021-01-01")
With a field-to-column map createdAt → p.created_at and parameter prefix wparam, SQL Server rendering produces:
([p].[created_at] > @wparam_0)
Sort:
createdAt,desc,name,asc
Full grammar, literal/quoting rules, and supported types: docs/query-syntax.md.
Documentation
- docs/overview.md — what Expresso is for, use cases, and when not to use it
- docs/packages.md — purpose of each of the 3 NuGet packages
- docs/getting-started.md — step-by-step: install, register, implement a field provider, parse, render, execute
- docs/query-syntax.md — filter/sort grammar, literals, supported types
- docs/field-providers.md —
IRequestFieldsInfoProvider/QueryModelexplained - docs/error-handling.md — exceptions thrown by parsing and rendering
- docs/functions/README.md — full function reference, one page per function, grouped by category
- docs/sample-app.md — walkthrough of the sample Web API
Sample
- samples/Expresso.Sample.WebApi — .NET 10 ASP.NET Core host with Swagger
- samples/Expresso.Sample.WebApi.NetFx — .NET Framework 4.8 OWIN + Web API 2 host
Both share samples/Expresso.Sample.Shared (models, ADO.NET repositories). Each host has its own field/QueryModel catalog. See docs/sample-app.md for a guided walkthrough.
Build
dotnet test .\Expresso.slnx -c Release -f net6.0
dotnet test .\Expresso.slnx -c Release -f net48 # Windows; validates .NET Framework consumers
dotnet pack .\Expresso.slnx -c Release -o .\artifacts
| Product | Versions 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. |
-
.NETStandard 2.0
- No dependencies.
-
net6.0
- No dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Expresso.Core:
| Package | Downloads |
|---|---|
|
Expresso.Rendering.SqlServer
Render Expresso expression trees to parameterized SQL Server WHERE and ORDER BY clauses. |
|
|
Expresso.Parsing
Parse Expresso filter and sort query strings into expression trees. |
GitHub repositories
This package is not used by any popular GitHub repositories.