Cómo combino varias listas IEnumerable juntas
-
10-07-2019 - |
Pregunta
Tengo una clase (ClassA) que tiene una propiedad IEnumerable. Luego tengo otra clase (ClassB) que tiene la misma propiedad. Están compartiendo una interfaz (InterfaceA). El ClassB es básicamente una clase contenedor para múltiples ClassA's. Cómo implemento la propiedad para ClassB.
interface InterfaceA
{
IEnumerable<int> MyInts
{
get;
}
}
class ClassA : InterfaceA
{
public IEnumerable<int> MyInts
{
get;
private set;
}
}
class ClassB : InterfaceA
{
ClassA[] classAs = new ClassA[10];
public IEnumerable<int> MyInts
{
get
{
//What goes here ?
classAs.SelectMany(classA => classA.MyInts);
}
}
}
Intenté usar una instrucción de selección LINQ pero eso no funciona.
Editar: Parece que no busqué lo suficiente. La respuesta está aquí en esta pregunta. ¿Cómo agrego múltiples IEnumerables de T
Editar 2: Incluya el código de ejemplo que funcionó para mí, en caso de que alguien más lo necesite.
Solución
Solo agrego mi respuesta, para que esto no quede sin respuesta.
classAs.SelectMany (classA = > classA.MyInts);
Encontré esto en esta pregunta .
Otros consejos
public IEnumerable<int> MyInts
{
get
{
foreach (ClassA c in classAs)
{
foreach (int i in c.MyInts)
{
yield return i;
}
}
}
}