Not with an Expression. If your parameter were just a Func<T, bool> then you could treat predicate as a delegate:
return (from p in preventivos
where predicate(p)
select new ...
Which will probably fail when the provider tries to convert to SQL since it needs have the metadata of an Expression to generate the equivalent SQL.
You could try to Compile the expression first to convert it to a Func<T, bool>:
return (from p in preventivos
where predicate.Compile()(p)
select new ...
Which will compile but may still fail at runtime when the query provider tries to convert it to SQL.
So unless you're really hung up on using query syntax, method syntax would be much cleaner:
return preventivos.Where(predicate)
.Select(p => new ...);
preventivos.Where(predicate).Select(e => new ...)