¿Diferencias entre IQueryable, List, IEnumerator?

Me pregunto cuál es la diferencia entre IQueryable, List, IEnumerator y cuándo debo usar cada uno.

Por ejemplo, cuando uso Linq to SQL, haría algo como esto:

public List<User> GetUsers()
{
   return db.User.where(/* some query here */).ToList();
}

Ahora me pregunto si debería usar IQueryable en su lugar. No estoy seguro de las ventajas de usarlo en la lista.

Respuestas a la pregunta(3)

Su respuesta a la pregunta