DynamicFilter.Sql
1.0.1
dotnet add package DynamicFilter.Sql --version 1.0.1
NuGet\Install-Package DynamicFilter.Sql -Version 1.0.1
<PackageReference Include="DynamicFilter.Sql" Version="1.0.1" />
paket add DynamicFilter.Sql --version 1.0.1
#r "nuget: DynamicFilter.Sql, 1.0.1"
// Install DynamicFilter.Sql as a Cake Addin #addin nuget:?package=DynamicFilter.Sql&version=1.0.1 // Install DynamicFilter.Sql as a Cake Tool #tool nuget:?package=DynamicFilter.Sql&version=1.0.1
DynamicFilter.Sql
A Fast and efficient dotnet library to dynamically generate compiled lambda expressions from sql style filters.
Installation
DynamicFilter.Sql package can be install via Nuget
dotnet add package DynamicFilter.Sql
Usage/Examples
The Compile
function takes a generic parameter that is used to determine the entity fields. This could be a user defined class or it could be a Dictionary<string, object>
type.
User defined class
With a user defined class, the field names within the filter expression have to match the property names defined within the class. This is resolved at compile time.
var myfilter = FilterExpression.Compile<User>("(Age > 10) and (Name like 'Alice%' or Name like 'Bob%')");
//Evaluate a single object
bool match = myFilter(new User {Age = 15, Name="Alice Wonderland"})
//Filter a collection
var names = users.Where(myfilter).Select(u => u.Name);
Dictionary
var dict = new Dictionary<string, object> {
{"Name" , "Alice"},
{"Age" , 12},
};
var filter = FilterExpression.Compile<Dictionary<string, object>>("(Age > 10) and (Name like 'Alice%' or Name like 'Bob%')");
var match = filter(dict); //returns true
Features
- Compile to .NET IL code.
- Support Sql Comparison operations
- =, <, >, ⇐, >=
- like, not like
- in, not in
- is null, is not null
- Dictionary and User objects
Use cases
- Dynamically generate code to filter objects in memory
- Filter a stream of data with a multiple criteria
- User Preferences/Filters that could be potentially saved/loaded from a File/Database.
Authors
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. |
.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
- Antlr4.CodeGenerator (>= 4.6.6)
- Antlr4.Runtime (>= 4.6.6)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
A Dotnet standard 2.0 library that dynamically generate compiled lambda expressions from sql style filters.