Skip to content

bubdm/MoreDynamicQuery

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

query-analysis

Open Source Love Nuget Nuget

Install-Package MoreDynamicQuery

dotnet add package MoreDynamicQuery

How does it work?

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();

MoreDynamicQuery

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

About

A library to make dynamic queries via LINQ and Expressions.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages