, IsStarted , .
In my code, I used this to create composite search operators, where search parameters are optional. For instance.
var quoteDatePredicate= PredicateBuilder.New<SearchData>();
if (searchCriteria.QuoteFromDate.HasValue)
{
quoteDatePredicate.And(x => x.QuoteDate >= searchCriteria.QuoteFromDate);
}
var saleDatePredicate = PredicateBuilder.New<SearchData>();
if (searchCriteria.SaleDate.HasValue)
{
saleDatePredicate.And(x => x.SaleDate >= searchCriteria.SaleDateFrom);
}
And then I create another predicate variable and use the operator Ifto add any predicates that were actually assigned:
var datesPredicate = PredicateBuilder.New<SearchData>();
if (quoteDatePredicate.IsStarted) datesPredicate.Or(quoteDatePredicate);
if (saleDatePredicate.IsStarted) datesPredicate.Or(saleDatePredicate);
So far, this seems to work fine in my code.
Alternatively, comparing the assigned and unassigned predicate variable in the debugger seems to suggest that you can use this to check if the predicate has been assigned:
if (dueOutOfDatePredicate.Parameters[0].Name = "f")
I have not even tried this.
source
share