JsonToLinq 1.0.0-rc9
This is a prerelease version of JsonToLinq.
There is a newer prerelease version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package JsonToLinq --version 1.0.0-rc9
NuGet\Install-Package JsonToLinq -Version 1.0.0-rc9
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="JsonToLinq" Version="1.0.0-rc9" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="JsonToLinq" Version="1.0.0-rc9" />
<PackageReference Include="JsonToLinq" />
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 JsonToLinq --version 1.0.0-rc9
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: JsonToLinq, 1.0.0-rc9"
#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 JsonToLinq@1.0.0-rc9
#: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=JsonToLinq&version=1.0.0-rc9&prerelease
#tool nuget:?package=JsonToLinq&version=1.0.0-rc9&prerelease
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
JsonToLinq
JsonToLinq - lightweight C# library that converts JSON-based query definitions into LINQ expressions. Ideal for building dynamic filters, predicates, and queries.
๐๏ธ Use Cases
JsonToLinq can be applied in various scenarios where dynamic, runtime-defined queries are needed. Examples include:
- Server-side filtering: Apply JSON-defined filters received from front-end applications to collections or database queries.
- Dynamic reporting: Build complex filters and predicates for reports without hardcoding logic.
- Custom dashboards: Let users define queries for dashboards dynamically and translate them to LINQ expressions.
- EF Core / Entity Framework queries: Map JSON filters directly to LINQ queries executed on the database.
- Audit & logging filters: Dynamically select subsets of data based on JSON rules for auditing or logging purposes.
๐ Default Operator Mapping
| JSON | LINQ Expression | Description |
|---|---|---|
& |
Expression.And |
Bitwise AND |
&& |
Expression.AndAlso |
Logical AND |
| |
Expression.Or |
Bitwise OR |
|| |
Expression.OrElse |
Logical OR |
= |
Expression.Equal |
Equal |
!= |
Expression.NotEqual |
Not equal |
> |
Expression.GreaterThan |
Greater than |
>= |
Expression.GreaterThanOrEqual |
Greater than or equal |
< |
Expression.LessThan |
Less than |
<= |
Expression.LessThanOrEqual |
Less than or equal |
๐งช Demos
Filtering Users
// 1. Source data.
var users = new List<User>
{
new() { Id = 1, Balance = 0, LastVisitAt = null },
new() { Id = 2, Balance = 0, LastVisitAt = DateTime.UtcNow },
new() { Id = 3, Balance = 0, LastVisitAt = DateTime.UtcNow.AddYears(-10) },
new() { Id = 4, Balance = 100, LastVisitAt = null },
new() { Id = 5, Balance = 100, LastVisitAt = DateTime.UtcNow },
new() { Id = 6, Balance = 100, LastVisitAt = DateTime.UtcNow.AddYears(-10) },
};
// 2. JSON filter definition (simulates front-end request).
var filterJson = JsonDocument.Parse(
"""
{
"Logic": "&&",
"Rules": [
{
"Field": "balance",
"Operator": "=",
"Value": 0
},
{
"Logic": "||",
"Rules": [
{
"Field": "lastVisitAt",
"Operator": "=",
"Value": null
},
{
"Field": "lastVisitAt",
"Operator": "<=",
"Value": "2025-01-01T00:00:00Z"
}
]
}
]
}
""");
// 3. Parse JSON to LINQ expression and compile.
var filterExpr = JsonLinq.ParseToFilterExpression<User>(filterJson);
var filterLambda = filterExpr.Compile();
// 4. Apply filter.
var filteredUsers = users.Where(filterLambda);
// 5. Output results.
foreach (var fu in filteredUsers)
{
Console.WriteLine($"Id: {fu.Id}");
}
// Id: 1
// Id: 3
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | 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.
-
.NETStandard 2.1
- System.Text.Json (>= 9.0.10)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0-rc905 | 12 | 12/11/2025 |
| 1.0.0-rc904 | 31 | 12/9/2025 |
| 1.0.0-rc903 | 76 | 12/6/2025 |
| 1.0.0-rc901 | 80 | 12/6/2025 |
| 1.0.0-rc9 | 610 | 12/2/2025 |
| 1.0.0-rc8 | 201 | 11/30/2025 |
| 1.0.0-rc7 | 197 | 11/30/2025 |
| 1.0.0-rc6 | 198 | 11/30/2025 |
| 1.0.0-rc5 | 200 | 11/30/2025 |
| 1.0.0-rc4 | 155 | 11/9/2025 |
| 1.0.0-rc3 | 109 | 11/2/2025 |
| 1.0.0-rc2 | 111 | 11/2/2025 |
| 1.0.0-rc13 | 122 | 12/5/2025 |
| 1.0.0-rc12 | 127 | 12/5/2025 |
| 1.0.0-rc11 | 124 | 12/5/2025 |
| 1.0.0-rc10 | 125 | 12/5/2025 |
| 1.0.0-rc1 | 73 | 11/1/2025 |