I have some doubts over how Enumerators work, and LINQ. Consider these two simple selects:
List sel = (from animal in Animals
In addition to all the answers posted above, here is my two cents. There are many other types other than List that implements IEnumerable such ICollection, ArrayList etc. So if we have IEnumerable as parameter of any method, we can pass any collection types to the function. Ie we can have method to operate on abstraction not any specific implementation.