I have seen many repository pattern implementations. Specifically of 2 types

1. They expose the generic repository which is queryable and expects a lamba expression from service class to get data from database.
2. Write methods to get the data from database based on business requirements and encapsulate the logic (even lambda) of retrieving the data.

Which one is a better approach?