C#

Dynamic Linq Predicates

Introduction

Have you ever tried to provide your users with a way to dynamically build their own query to filter a list? If you ever tried, maybe you found it a little complicated. If you never tried, it could be tedious to do. But, with the help of LINQ, it does not need to be that hard (indeed, it could be even enjoyable).

Description

Predicate Builder is a powerful LINQ expression that is mainly used when too many search filter parameters are used for querying data by writing dynamic query expression. We can write a query like Dynamic SQL.

Background
Scenario

Filter record for the employees having salary > 10000

A typical Linq Predicate used will be

x=> x.salary > 10000

But suppose you want to provide your users a way to choose on which field and with what value they want to filter records like below:

One way is to write predicate for each individual filter and checking each time user hits

If (filter == "Name")
  result = employees.Where(x=> x.Name ==  {value});
Else If (filter == "Dev")
  result = employees.Where(x=> x.Dev == {value});
Else If (filter == "Age")
  result = employees.Where(x=> x.Age ==  {value});
Else If (filter == "Salary")
  result = employees.Where(x=> x.Salary ==  {value});

Another way is building dynamic predicate based on the user’s selection with less code. Here field name and filter value both will be provided by Use , for each individual criteria no need to write separate code.

var andCriteria = new List();
Expression<Func<Employee, bool>> predicate;
string Fieldname = string.Empty, FieldValue = string.Empty;

var type = t.GetProperty(Fieldname);
                   andCriteria.Add(c => Cast(type.GetValue(c),   type.PropertyType) == Cast(FieldValue, type.PropertyType));
                   
predicate = c => andCriteria.All(pred => pred(c));

result = employees.AsQueryable().Where(predicate).ToList();

You can use the same logic when you want to apply filters on multiple fields and want to sort data.

Demo: https://github.com/roshnitriveni/DynamicLinqPredicates

Team Triveni (Technical)
About Triveni

Triveni is such strong and trustworthy name in the field of customised IT solution provider which is earnest name in Indian IT sector.

Read More

Leave a Reply

Your email address will not be published. Required fields are marked *

Privacy Settings
We use cookies to enhance your experience while using our website. If you are using our Services via a browser you can restrict, block or remove cookies through your web browser settings. We also use content and scripts from third parties that may use tracking technologies. You can selectively provide your consent below to allow such third party embeds. For complete information about the cookies we use, data we collect and how we process them, please check our Privacy Policy
Youtube
Consent to display content from Youtube
Vimeo
Consent to display content from Vimeo
Google Maps
Consent to display content from Google
Spotify
Consent to display content from Spotify
Sound Cloud
Consent to display content from Sound