Метод расширения C # для AddItem в IEnumerable <T> - PullRequest
1 голос
/ 06 июля 2010

Как лучше всего добавить элемент в коллекцию IEnumerable с помощью метода Extension?

Ответы [ 3 ]

10 голосов
/ 06 июля 2010
enumerable.Concat(new[]{ objToAdd })
1 голос
/ 06 июля 2010

Вы не можете (напрямую).Цель интерфейса - открыть перечислитель.

Редактировать : вам придется преобразовать IEnumerable в другой тип (например, List) или добавить конкатенацию, что приведет кне в добавлении к существующему IEnumerable, а вместо присоединения к новому IEnumerable.

Единственным вариантом будет проверить, реализует ли он какой-либо из интерфейсов, используемых для добавления, таких как IList, ICollectionIDictionary, ILookup, ... и даже тогда вы не будете уверены, что сможете добавить к существующему IEnumerable.

0 голосов
/ 06 июля 2010

У меня есть это в моем классе IEnumerableExtensions, но я не уверен, что это слишком эффективно, но я использую его очень экономно.

public static IEnumerable<T> Add<T>(this IEnumerable<T> enumerable, T item)
{
   var list = enumerable.ToList();
   list.Add(item);
   return list;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...