public static Expression <Func <DateTime?, bool> > IsInRange(this DateTimeRange range) { var predicate = PredicateBuilder.False <DateTime?>(); predicate = PredicateBuilder.Or(predicate, date => date == null || (range.FromDate == null || range.IncludeFrom ? range.FromDate <= date : range.FromDate < date) && (range.ToDate == null || range.IncludeTo ? range.ToDate >= date : range.ToDate > date)); return(LinqKit.Extensions.Expand(predicate)); }
public static Expression <Func <DateTime?, bool> > IsInRanges(this DateTimeRange[] ranges) { var predicate = PredicateBuilder.False <DateTime?>(); predicate = ranges.Aggregate(predicate, (current, range) => PredicateBuilder.Or(current, IsInRange(range))); return(LinqKit.Extensions.Expand(predicate)); }