IEnumerable не поддерживает добавление. В сущности, вы сделали в своем коде создание новой коллекции из вашего перечисляемого и добавление элементов в эту новую коллекцию. В вашей старой коллекции все те же предметы.
Например, вы создаете коллекцию чисел, как это
Collection1 = [ 1, 2, 3, 4, 5 ]
когда вы делаете Collection1.ToList (). Add (...) вы получите новую коллекцию с теми же членами, и добавите новых членов, например, так:
Collection1 = [ 1, 2, 3, 4, 5, 6, 7, ... ]
однако ваша старая коллекция будет по-прежнему содержать старых членов, поскольку ToList создает новую коллекцию.
Решение № 1:
Вместо использования IEnumerable используйте IList , который поддерживает модификацию.
Решение № 2 (плохое):
Приведите ваш IEnumerable обратно к его производному типу и добавьте в него членов. Это довольно плохо, хотя на самом деле лучше просто вернуть List в первую очередь
IEnumerable<Order> collectionOne = ...;
List<Order> collectionOneList = (List<Order>)collectionOne;
collectionOneList.Add(new Order());
Общее руководство (лучше всего):
Если вы возвращаете коллекции, которые являются стандартными в .NET, нет причин возвращать их интерфейсы. В этом случае лучше всего использовать оригинальный тип. Если вы, однако, возвращаете коллекцию, которую вы реализовали сами, вы должны вернуть интерфейс
Это совершенно другой случай, когда вы думаете о входных параметрах. Если ваш метод запрашивает перечисление элементов, вам следует запросить IEnumerable. Таким образом, вы можете делать то, что вам нужно, и вы меньше всего ограничиваете человека, который его называет. Они могут отправлять любые перечисляемые. Если вам нужно добавить эту коллекцию, вам может потребоваться IList, чтобы вы также могли изменить ее в своем методе.