This is a nice example: The Repository Pattern Example in C#
Basically, repository hides the details of how exactly the data is being fetched/persisted from/to the database. Under the covers:
- for reading, it creates the query satisfying the supplied criteria and returns the result set
- for writing, it issues the commands necessary to make the underlying persistence engine (e.g. an SQL database) save the data