If you want o use expressions, then you have to write your very own expression parser which will generate the relevant linq2sql expressions.
A much easier way is to use simple objects, dedicated for the specific criteria
public class TaskSelectionCriteria
{
public Guid? Id {get;set;}
public string TaskText {get;set;}
}
Then in the repo you can check if Id is not null, add Where(d=>d.Id=criteria.Id.Value) , if has a TaskTExt, add the corresponding EF condition and so on.
It's not that cool as using expressions, but it's MUCH easier to implement and maintain. And you keep the EF stuff unknown to the rest of the app.