Какая разница между интерфейсами IEnumerable и IEnumerator?
Та сущность, по которой пробегают, должна реализовывать IEnumerable.
Та сущность, которая пробегает, должна реализовывать IEnumerator (обычно это вложенный, нередко приватно объявленный класс).
То что вы сказали я к сожалению не понял.
Enumerable - перечислимое, Enumerator - перечислитель (с англ.), когда вы спите, овцы это IEnumerable, а вы который их считает - IEnumerator.