I am trying to implement an extension method that will work with linq2entities. I had initially assumed that if my extension method took and returned an IQueryable, and as
Instead of using expressions e.g.
Expression> IsCurrent = (p)
=> p.Ends > DateTime.Now && p.Starts <= DateTime.Now;
var query = db.PersonHistories.Where(IsCurrent);
You can define extension methods such as:
public static IsCurrent Func<
IQueryable, DateTime, IQueryable
>()
{
return (IQueryable query, DateTime referenceDate) =>
query.Where(p.Ends > referenceDate && p.Starts <= referenceDate);
}
The use it like this:
var query = IsCurrent();
var results = query(context.PeoplesHistory, referenceDate);
Or:
var results = query(previousResults, referenceDate);
Or alternatively:
public static IsCurrent Func, IQueryable>(
DateTime referenceDate)
{
return (IQueryable query) =>
query.Where(p.Ends > referenceDate && p.Starts <= referenceDate);
}
var query = IsCurrent(refernceDate);
var results = query(context.PeoplesHistory);
That way you don't need a framework for building expressions.