Это вряд ли возможно, потому что если вы хотите предварительно скомпилировать запрос, вы должны это знать. С универсальным репозиторием у вас обычно есть только это:
public interface IRepository<T>
{
IQueryable<T> GetQuery();
}
Таким образом, код, использующий экземпляр репозитория, отвечает за определение запроса. Предварительная компиляция требует конкретного репозитория, который будет содержать такие методы, как:
IEnumerable<Order> GetOrdersWithHeaderAndItemsByDate(DateTime date, int take, int skip);
IEnumerable<OrderHeader> GetOrderHeadersOrderedByCustomer(int take, int skip);
и т.д.
Очевидно, что вы вряд ли сможете подготовить такие запросы в общем хранилище, поскольку они зависят от конкретной сущности.