, Payment PaymentLinqExtensions, .
. , , .
, , , , IHaveADate ( - : -)
public static IQueryable<T> WithinDateRange(this IQueryable<T> source, DateTime from, DateTime to) where T:IHaveADate
(IQueryable . , IEnumerable , . , SQL, , . LINQ, , , )
, , "EndDate" , DateRange.
public static IQueryable<T> WithinDateRange(this IQueryable<T> source, DateRange range) where T:IHaveADate
, ,
public static IEnumerable<T> WithinDateRange(this IEnumerable<T> source, DateRange range, Func<DateTime,T> getDate)
but this is more like DateRange to me. I do not know how much this will be used, although your situation may change. I found that getting too generic can make it harder to understand, and LINQ can be hard to debug.
var filtered = myThingCollection.WithinDateRange(myDateRange, x => x.Date)