Install-Package MoreDynamicQuery
dotnet add package MoreDynamicQuery
This library is an extension for C# IQueryable interface. It helps you to access a new type of extension method with DynamicWhere name.
DynamicWhere takes list of DynamicFilter as an argument.
// DynamicFilter
// The name of property you want to query on it.
public string PropertyName { get; set; }
// The value of property you are looking for it in query.
public object PropertyValue { get; set; }
// The filter you want to compare the property with it.
public ComparisonFilter ComparisonFilter { get; set; }It supports these comparison filters:
LessThan
LessThanEqual
GreaterThan
GreaterThanEqual
Equal
NotEqual
IsNullOrEmpty
IsNotNullOrEmpty
IsNullOrWhiteSpace
IsNotNullOrWhiteSpace
Contains
DoesNotContain
StartsWith
DoesNotStartWith
EndsWith
DoesNotEndWith
Like
NotLike
Let's see a working example
// Data source
var people = PeopleDataGenerator.GetPeople(2500);
var filters = new List<DynamicFilter>();
var df1 = new DynamicFilter()
{
ComparisonFilter = ComparisonFilter.DoesNotContain,
PropertyName = nameof(Person.Name),
PropertyValue = "h"
};
var df2 = new DynamicFilter()
{
ComparisonFilter = ComparisonFilter.Contains,
PropertyName = nameof(Person.FamilyName),
PropertyValue = "f"
};
filters.Add(df1);
filters.Add(df2);
// var result = people.DynamicWhere(df1, df2).ToList();
var result = people.DynamicWhere(filters).ToList();DynamicWhere works with different data types.
IQueryable<TModel> DynamicWhere<TModel>(this IQueryable<TModel> queryable, IEnumerable<DynamicFilter> dynamicFilters)
IQueryable<TModel> DynamicWhere<TModel>(this IEnumerable<TModel> enumerable, IEnumerable<DynamicFilter> dynamicFilters)
IQueryable<TModel> DynamicWhere<TModel>(this TModel[] array, IEnumerable<DynamicFilter> dynamicFilters)
IQueryable<TModel> DynamicWhere<TModel>(this IQueryable<TModel> queryable, params DynamicFilter[] dynamicFilters)
IQueryable<TModel> DynamicWhere<TModel>(this IEnumerable<TModel> enumerable, params DynamicFilter[] dynamicFilters)
IQueryable<TModel> DynamicWhere<TModel>(this TModel[] array, params DynamicFilter[] dynamicFilters)Icons made by Flat Icons from www.flaticon.com

