So I'm a little tired of rewriting the same queries over and over again.
repo.Query().Where(stuff => stuff.Timestamp >= minTime && stuff.Timestamp <= maxTime && ...);
I thought I should expand IQueryableusing the method IsInDateTimeRangeand use it like this:
repo.Query().IsInDateTimeRange(stuff => stuff.Timestamp, minTime, maxTime) ...
it would be very easy for IEnumerable, just Func<T, DateTime>and two DateTimes, however for IQueryableme I need to take Expression, and I'm not sure how to use it.
It was my attempt, but does not seem to work.
public static IQueryable<TValue> IsInDateTimeRange<TValue>(
this IQueryable<TValue> self,
Expression<Func<TValue, DateTime>> getMember,
DateTime minTime,
DateTime maxTime)
{
return self.Where(value => minTime >= getMember(value) && maxTime <= getMember(value));
}
source
share