DYNAMIC LINQ WHERE QUERY

Goti Bandu

Total Post:119

Points:835
Posted by  Goti Bandu
C# 
C#
 964  View(s)
Ratings:
Rate this:

I'm using dynamic LINQ to create a query from given columns the user selects for a given search.

var counter = 0;

var predicate = string.Empty;

foreach(var field in selectedFields)

{

    predicate += field + ".Contains(@" + counter + ") ||";

    // logical OR, without it the SQL generates AND

}   

predicate = predicate.Remove(predicate.LastIndexOf("||", 2));

query = query.Where(predicate, searchvalues);

This code generates the given SQL query

(([t0].[Field1] LIKE 'searchstring') OR ([t0].[Field2] LIKE 'searchstring'))

Which is correct, albeit what i want to do is be able to use wildcards, when i try to enter let's say, a percent character, the SQL generated is

(([t0].[field1] LIKE 'searchstring' ESCAPE '~') OR ([t0].[field2] LIKE 'searchstring' ESCAPE '~'))

Is there a way to use wildcards in the searchstring while using dynamic L2S?

  1. Sumit Kesarwani

    Post:378

    Points:2694
    Re: Dynamic LINQ where query

    Hi Goti, 


    You can try using .StartsWith || .EndsWith || .Contains

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!