Tengo dos instancias de IEnumerable<T>
(con lo mismo T
). Quiero una nueva instancia de la IEnumerable<T>
cual es la concatenación de ambos.
¿Hay un método incorporado en .Net para hacer eso o tengo que escribirlo yo mismo?
c#
.net
ienumerable
concatenation
Samuel Rossille
fuente
fuente
Respuestas:
Sí, LINQ to Objects admite esto con
Enumerable.Concat
:NB: Debería ser nulo
first
osecond
recibiría unArgumentNullException
. Para evitar esto y tratar los nulos como lo haría con un conjunto vacío, use el operador de fusión nulo de la siguiente manera:fuente
using System.Linq
espacio de nombres en la parte superior del archivo de código para ver el método de extensión deseado en el IDE intellisense.El
Concat
método devolverá un objeto que se implementaIEnumerable<T>
devolviendo un objeto (llámelo Cat) cuyo enumerador intentará usar los dos elementos enumerables pasados (llámelos A y B) en secuencia. Si los enumerables pasados representan secuencias que no cambiarán durante la vida útil de Cat, y que se pueden leer sin efectos secundarios, entonces Cat se puede usar directamente. De lo contrario, puede ser una buena idea para llamarToList()
enCat
y utilizar el resultadoList<T>
(que representará una instantánea del contenido de A y B).Algunos enumerables toman una instantánea cuando comienza la enumeración y devolverán datos de esa instantánea si la colección se modifica durante la enumeración. Si B es tan enumerable, cualquier cambio en B que ocurra antes de que Cat haya llegado al final de A aparecerá en la enumeración de Cat, pero los cambios que ocurran después de eso no lo harán. Tal semántica puede ser confusa; Tomar una instantánea de Cat puede evitar tales problemas.
fuente
Puede usar el siguiente código para su solución: -
fuente
fuente