New Posts New Posts RSS Feed: Combining Filters in QueryInterceptor
  FAQ FAQ  Forum Search   Calendar   Register Register  Login Login

Combining Filters in QueryInterceptor

 Post Reply Post Reply
Author
gregweb View Drop Down
DevForce MVP
DevForce MVP
Avatar

Joined: 10-Sep-2009
Location: Clearwater, Fl
Posts: 253
Post Options Post Options   Quote gregweb Quote  Post ReplyReply Direct Link To This Post Topic: Combining Filters in QueryInterceptor
    Posted: 25-Aug-2013 at 2:12pm
In my QueryInterceptor, I add several filters. The issue is that only one filter is allowed.

So I am trying to check and see if an existing filter exists, and if it does, add a second PredicateDescription to it.

    if (typeof(IDeletable).IsAssignableFrom(Query.QueryableType)) {
               var deleteFilter = new PredicateDescription(Query.QueryableType, "IsDeleted", FilterOperator.IsEqualTo, false);
               var existingFilter = QueryFilters.GetFilterQueryForType(Query.QueryableType);
               if (existingFilter != null) {
                    var combinedFilter = //Combine Filters Here
                    QueryFilters.AddFilter(combinedFilter, true);
               }
               else {
                    QueryFilters.AddFilter(deleteFilter);
               }       
            }

But I don't see a way to do this.

Greg
Back to Top
kimj View Drop Down
IdeaBlade
IdeaBlade
Avatar

Joined: 09-May-2007
Posts: 1391
Post Options Post Options   Quote kimj Quote  Post ReplyReply Direct Link To This Post Posted: 26-Aug-2013 at 7:20pm
It might be easiest to create and combine the filters, and then add the combined filter to the QueryFilters.
 
var filters = new List<PredicateDescription>();
 
// Some conditional logic ..
filters.Add(new PredicateDescription(Query.QueryableType, "SomeProp", FilterOperator.IsEqualTo, "a"));
 
// More conditional logic ..
filters.Add(new PredicateDescription(Query.QueryableType, "Discontinued", FilterOperator.IsEqualTo, false));
 
// Combine and add
var combinedFilter = PredicateBuilder.And(filters.ToArray());
QueryFilters.AddFilter(combinedFilter);
 
Back to Top
gregweb View Drop Down
DevForce MVP
DevForce MVP
Avatar

Joined: 10-Sep-2009
Location: Clearwater, Fl
Posts: 253
Post Options Post Options   Quote gregweb Quote  Post ReplyReply Direct Link To This Post Posted: 22-Sep-2013 at 6:55pm
Thanks, great idea.

Greg
Back to Top
 Post Reply Post Reply

Forum Jump Forum Permissions View Drop Down