c# - Entity Framework Dynamic Query Expression being ignored -


i have operation takes serializable querymodel , converts expression passed entity framework. query against database looks like:

    public ienumerable<photoverifysessionoverview> findsessions(expression<func<vwphotoverifysession, bool>> predicate, paginationmodel model)     {          var sessions =  context.vwphotoverifysessions             .asqueryable()             .where(predicate)             .orderby(string.format("{0} {1}", model.orderbycolumn, model.orderbydirection))             .skip(model.offset)             .take(model.pagesize);          return mapper.map<ienumerable<photoverifysessionoverview>>(sessions);     } 

and predicate builder looks like:

        var predicate = predicatebuilder.true<vwphotoverifysession>();          //add tenant clause         if (model.tenantid.hasvalue)             predicate.and(p => p.tenantid == model.tenantid.value);         else             predicate.and(p => p.tenantreferenceid == model.tenantreferenceid);          //add date range if 1 present         if (model.createdonrange != default(daterange))         {             var enddate = model.createdonrange.end == default(datetime) ? datetime.now : model.createdonrange.end;              predicate.and(p => p.createdon >= model.createdonrange.start && p.createdon <= enddate);         }          //include status filtering if filters present         if (model.statusfilter != null && model.statusfilter.any())         {             //use id , name search status             predicate.and(p => model.statusfilter.any(f => f.statusid == p.statusid || p.status == f.name));         }          var pagination = model paginationmodel;          var sessions = manager.findsessions(predicate, pagination);          return sessions; 

the problem is, clause not being evaluated , results being returned. there else should doing statement work correctly?

you need assign predicate itself.

 predicate = predicate.and(p => p.tenantid == model.tenantid.value); 

Comments