Eu tenho duas instâncias de IEnumerable<T>
(com o mesmo T
). Eu quero uma nova instância da IEnumerable<T>
qual é a concatenação de ambos.
Existe um método embutido no .Net para fazer isso ou eu mesmo tenho que escrever?
c#
.net
ienumerable
concatenation
Samuel Rossille
fonte
fonte
Respostas:
Sim, o LINQ to Objects suporta isso com
Enumerable.Concat
:NB: Se for
first
ousecond
for nulo, você receberá aArgumentNullException
. Para evitar isso e tratar nulos como faria com um conjunto vazio, use o operador coalescente nulo da seguinte maneira:fonte
using System.Linq
namespace na parte superior do arquivo de código para ver o método de extensão desejado no IDE intellisense.O
Concat
método retornará um objeto implementadoIEnumerable<T>
retornando um objeto (chamado Cat), cujo enumerador tentará usar os dois itens enumeráveis passados (os chamados A e B) em sequência. Se os enumeráveis passados representam sequências que não serão alteradas durante a vida útil do gato e que podem ser lidas sem efeitos colaterais, o gato poderá ser usado diretamente. Caso contrário, pode ser uma boa idéia para chamarToList()
onCat
e usar o resultadoList<T>
(o que representará um instantâneo do conteúdo de A e B).Alguns enumeráveis tiram um instantâneo quando a enumeração começa e retornam dados desse instantâneo se a coleção for modificada durante a enumeração. Se B for um enumerável, qualquer alteração em B que ocorra antes do final de A de Cat será exibida na enumeração de Cat, mas as alterações que ocorrerem depois disso não serão. Essa semântica provavelmente pode ser confusa; tirar uma foto instantânea do Cat pode evitar esses problemas.
fonte
Você pode usar o código abaixo para sua solução: -
fonte
fonte