DynamicFilter.Sql 1.0.1

dotnet add package DynamicFilter.Sql --version 1.0.1                
NuGet\Install-Package DynamicFilter.Sql -Version 1.0.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="DynamicFilter.Sql" Version="1.0.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add DynamicFilter.Sql --version 1.0.1                
#r "nuget: DynamicFilter.Sql, 1.0.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.
// 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

GitHub GitHub Workflow Status Nuget

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.1 638 9/26/2022
1.0.0 401 9/24/2022
0.2.2 420 9/24/2022
0.2.1 397 9/24/2022
0.1.1 441 9/23/2022
0.1.0 401 9/22/2022

A Dotnet standard 2.0 library that dynamically generate compiled lambda expressions from sql style filters.