Search code examples
c#asp.netteleriktelerik-griddynamic-linq

Using Radgrid filter expression to query collection gives exception 'Expression Expected'


I am trying to query a collection using the filter expression from my radgrid. On the RadGrid I have the property of EnableLinqExpressions = "false"

However I get the exception Expression Expected when using the code:

results = results.Where(filterExpression);

At the moment the filter expression is in the format "(([SCRIPT_AGENT] = 'Jack Davies'))"

How can I solve this issue?

When I enter the following it works:

results = results.Where("SCRIPT_AGENT == @0", "Jack Davies")

Is there anyway to use my current filter expression or is there someway to convert it into a usable format?


Solution

  • Instead of using the filter expression of the rad grid I decided to use a different approach and use the current data in the rad grid itself when a filter is applied:

            // If there is a filter applied then enter the loop if there isn't then the filter expression will be empty 
            if (!String.IsNullOrEmpty(filterExpression))
            {                
                // Create a new list of strings to hold the sequence ids
                List<string> sequenceIds = new List<string>();
    
                // For each row in the radgrid...
                foreach (GridDataItem row in rgCallRecordings.Items) // loops through each rows in RadGrid
                {
                    // ...Add the sequence id to the list
                    sequenceIds.Add(row.GetDataKeyValue("SEQUENCE_ID").ToString());                    
                }
                // Only return results whose sequence ids are in the list
                results = results.Where(a => sequenceIds.Contains(a.SEQUENCE_ID));                
            }    
    

    This eliminated the error and produced the same results as using the filter expressions.