A simple dynamic expression-tree query builder. You pass it a nested collection of filters for an object, and it materializes a query capable of acting as the filter to an arbitrary collection.
$ dotnet add package Castle.DynamicLinqQueryBuilderdynamic-linq-query-builder is a small library that allows any .Net framework class collection to be filtered dynamically at runtime.
Generates an IQueryable from any collection and filter combination
Capable of complex, grouped queries against as many fields as you want
Supports nested objects and collections via dot notation
Supports ORMs like EF6, EFCore, and MongoDB Client >=2.19
Supports a number of operators for each type
Compatible with jQuery QueryBuilder (see samples for an example)
Targets .NET 4.5, .NET Standard 2.0, .NET 6, and .NET 8
dynamic-linq-query-builder can be installed via the nuget UI (as Castle.DynamicLinqQueryBuilder), or via the nuget package manager console:
PM> Install-Package Castle.DynamicLinqQueryBuilder
dynamic-linq-query-builder-system-text-json can be installed via the nuget UI (as Castle.DynamicLinqQueryBuilder.SystemTextJson), or via the nuget package manager console:
PM> Install-Package Castle.DynamicLinqQueryBuilder.SystemTextJson
The easiest way to get started is to install the NuGet package and take a look at the MVC sample application included in the source code. It contains a working example of both dynamic-linq-query-builder and jQuery-QueryBuilder.
Additionally, see the Wiki
Contributions and pull requests are welcome with associated unit tests.