Список - это просто расширенный массив с большим количеством функций.
Это означает, что если вы добавите что-то в список, он останется на том же месте
Но он перемещает вещи в индексвниз, если вы удалите что-то в середине списка.
Это означает, что если у вас есть этот список
List<int> numbers = new List<int>() {0, 1, 2, 3, 4};
И вы удалите элемент с индексом 1, вы получите этот список
{0, 2, 3, 4};
Это означает, что число в индексе 2 теперь находится в индексе 1.
Порядок списка изменится только при изменении самого списка (Удаление и элемент, Добавление элементаили вручную изменяет порядок списка (например, orderBy)
Он не изменится, если вы измените объект в списке.
IEnumerable может отличаться, потому что это просто интерфейсэто определяет некоторые методы, которые должны быть реализованы, как метод GetEnumerator. Это означает, что это зависит от реализации IEnumerable
(подробнее на этот вопрос " Может кто-нибудь объяснитьIEnumerable и IEnumerator для меня?"
Надеюсь, это поможет