¿Cómo concatenar dos IEnumerable en un nuevo IEnumerable ?

Tengo dos instancias de IEnumerable (con la misma T ). Quiero una nueva instancia de IEnumerable que es la concatenación de ambos.

¿Existe un método incorporado en .Net para hacer eso o tengo que escribirlo yo mismo?

Sí, LINQ to Objects lo admite con Enumerable.Concat :

 var together = first.Concat(second); 

El método Concat devolverá un objeto que implementa IEnumerable devolviendo un objeto (llámalo Cat) cuyo enumerador intentará utilizar los dos elementos enumerables pasados ​​(llámalos A y B) en secuencia. Si los enumerados pasados ​​representan secuencias que no cambiarán durante la vida útil de Cat, y que pueden leerse sin efectos secundarios, entonces Cat puede usarse directamente. De lo contrario, puede ser una buena idea llamar a ToList() en Cat y usar la List resultante List (que representará una instantánea de los contenidos de A y B).

Algunos enumerables toman una instantánea cuando comienza la enumeración, y devolverán los datos de esa instantánea si la colección se modifica durante la enumeración. Si B es tal enumerable, cualquier cambio a B que ocurra antes de que Cat haya alcanzado el 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.

Puede usar el siguiente código para su solución:

 public void Linq94() { int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 }; int[] numbersB = { 1, 3, 5, 7, 8 }; var allNumbers = numbersA.Concat(numbersB); Console.WriteLine("All numbers from both arrays:"); foreach (var n in allNumbers) { Console.WriteLine(n); } } 
 //The answare i was looking for when searching public void Answer() { IEnumerable first = this.GetFirstIEnumerableList(); //Assign to empty list so we can use later IEnumerable second = new List(); if (IwantToUseSecondList) { second = this.GetSecondIEnumerableList(); } IEnumerable concatedList = first.Concat(second); }