У меня есть два экземпляра IEnumerable<T>
(с одинаковыми T
). Я хочу новый экземпляр, IEnumerable<T>
который является объединением обоих.
Есть ли встроенный метод в .Net, чтобы сделать это, или я должен написать это сам?
c#
.net
ienumerable
concatenation
Сэмюэл Россиль
источник
источник
Ответы:
Да, LINQ to Objects поддерживает это с
Enumerable.Concat
:NB: Если бы вы были
first
илиsecond
были нулем, вы бы получилиArgumentNullException
. Чтобы избежать этого и обрабатывать пустые значения как пустой набор, используйте оператор объединения нулей следующим образом:источник
using System.Linq
пространство имен в верхней части файла кода, чтобы увидеть нужный метод расширения в intellisense IDE.Concat
Метод возвращает объект , который реализуетIEnumerable<T>
путем возврата объекта (назовем его Cat) , чей перечислитель будет пытаться использовать два переданное перечислимых элементов (назовем их А и В) в определенной последовательности. Если переданные перечислимые числа представляют последовательности, которые не изменятся в течение срока службы Cat и могут быть прочитаны без побочных эффектов, тогда Cat может использоваться напрямую. В противном случае, это может быть идея хорошо , чтобы позвонитьToList()
наCat
и использовать полученнуюList<T>
(который будет представлять собой снимок содержимого А и В).Некоторые перечислимые снимки делают снимок при начале перечисления и возвращают данные из этого снимка, если коллекция изменена во время перечисления. Если B является таким перечислимым, то любое изменение в B, которое происходит до того, как Cat достигнет конца A, будет отображаться в перечислении Cat, но изменений, которые происходят после этого, не будет. Такая семантика, вероятно, может сбивать с толку; сделав снимок кошки, можно избежать подобных проблем.
источник
Вы можете использовать код ниже для вашего решения: -
источник
источник