Not a dodge to your question, but it's ultimately up to you to decide how your repository would work.
The high level premise is that your controller would point to some repository interface, say IRepository<T> where T : IProduct
. The implementation of which could do any number of things---load up your whole database from disk and store in memory and then parse LINQ expressions to return stuff. Or it could just return a fixed set of dummy data for testing purposes. Because you're banging away on an repository interface, then you could have any number of concrete implementations.
Now, if you're looking for a critique of Rob's specific implementation, I'm not sure that's germaine to SO.